文章目录零算法介绍一例题介绍使用最小花费爬楼梯问题分析Leetcode例题与思路[118.杨辉三角](https://leetcode.cn/problems/pascals-triangle/)解题思路题解[53.最大子数组和](https://leetcode.cn/problems/maximum-subarray/)解题思路题解[96.不同的二叉搜索树](https://leetcode.cn/problems/unique-binary-search-trees/)解题思路题解[322.零钱兑换](https://leetcode.cn/problems/coin-change/)解
语言:Java/C++目录数组理论基础704.二分查找🏁解题思路:35.搜索插入位置27.移除元素🏁解题思路:暴力解法双指针方法今日心得数组理论基础数组是存放在连续内存空间上的相同类型数据的集合下标都是从0开始的内存空间的地址是连续的——>增删需移动其他元素的地址数组元素不能被删除,只能覆盖C++中,vector的底层实现是array,是容器,不是数组,且C++中二维数组在地址空间上是连续的。704.二分查找给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。你
文章目录C/C++笔试练习选择部分(1)顺序表的时间复杂度(2)链表的性质(3)双向循环链表(4)栈的性质(5)循环队列的有效长度(6)二叉树的性质(7)二叉平衡树(8)堆排序(9)哈希表散列法冲突(10)快速排序的过程编程题day20字符串反转公共字串计算C/C++笔试练习选择部分(1)顺序表的时间复杂度 对于顺序存储的线性表,访问结点和增加结点的时间复杂度为()。 A.O(n)O(n) B.O(n)O(1) C.O(1)O(n) D.O(1)O(1) 答案:C 顺序存储的线性表的特点是:数据元素是连续的,每个元素占用固定大小的存储单元。因此,我们可以通过元素的下标直接计算出其
链表简单题面试题02.03.删除中间节点voiddeleteNode(structListNode*node){//转换成删除下一个节点node->val=node->next->val;node->next=node->next->next;}1290.二进制链表转整数intgetDecimalValue(structListNode*head){structListNode*cur=head;intres=0;while(cur!=NULL){resval;cur=cur->next;}returnres;}面试题02.02.返回倒数第k个节点intkthToLast(structList
题目传送门题目描述几张卡牌排成一行,每张卡牌都有一个对应的点数。点数由整数数组cardPointscardPointscardPoints给出。每次行动,你可以从行的开头或者末尾拿一张卡牌,最终你必须正好拿kkk张卡牌。你的点数就是你拿到手中的所有卡牌的点数之和。给你一个整数数组cardPointscardPointscardPoints和整数kkk,请你返回可以获得的最大点数。示例1:输入:nums=[2,3,5,9],k=2输出:5解释:小偷窃取至少2间房屋,共有3种方式:-窃取下标0和2处的房屋,窃取能力为max(nums[0],nums[2])=5。-窃取下标0和3处的房屋,窃取能力为
leetcode链接203.移除链表元素#include#includestructListNode{ intval; structListNode*next;};typedefstructListNodeListNode;ListNode*RemoveElements1(ListNode*head,intval){ ListNode*cur=head; ListNode*prev=NULL; ListNode*next=NULL; while(cur){ next=cur->next;//下一个节点 if(cur->val==val){ free(cur);//1.删除 cur=
大家好,我是苏貝,本篇博客带大家刷题,如果你觉得我写的还不错的话,可以给我一个赞👍吗,感谢❤️目录1.暴力求解法2.采用异或的方法(同单身狗问题)3.先求和再减去数组元素点击查看题目1.暴力求解法通过2个for循环,遍历查找0-n中缺少的数字,比较简单,不写,时间复杂度为O(N^2)2.采用异或的方法(同单身狗问题)点击去了解异或,位置在④.3异或:两个整数的相同位置:相同为0,不同为1(二进制),易知a^a=0,a^0=a;具有交换律,所以a^b^a=a^a^b=0^b=b。在本题中,先使x=0(因为0^任何数=任何数本身),再让x与0-n(n是数组的元素个数)的所有数字异或,再让x与num
第1关:建单向链表任务描述本关需要你建立一个带头结点的单向链表。相关知识什么是链表?链表和二叉树是C语言数据结构的基础和核心。链表有多种形式,它可以是单链接的或者双链接的,可以是已排序的或未排序的,可以是循环的或非循环的。本关让我们来学习单链表。单链表单向链表(单链表)是链表的一种,其特点是链表的链接方向是单向的,对链表的访问要通过顺序读取从头部开始,链表是使用指针进行构造的列表,又称为结点列表,因为链表是由一个个结点组装起来的,其中每个结点都有指针成员变量指向列表中的下一个结点。列表是由结点构成,head指针指向第一个成为表头结点,而终止于最后一个指向nuLL的指针。一个简单结点的结构体表示
目录1.题目2.题解C#解法一:分段匹配法C#解法二:回溯法C#解法三:动态规划1.题目给你一个字符串s和一个字符规律p,请你来实现一个支持‘.’和‘*’的正则表达式匹配。1.‘.’匹配任意单个字符2.‘.’匹配任意单个字符所谓匹配,是要涵盖整个字符串s的,而不是部分字符串。示例1:输入:s="aa",p="a"输出:false解释:"a"无法匹配"aa"整个字符串。示例2:输入:s="aa",p="a*"输出:true解释:因为'*'代表可以匹配零个或多个前面的那一个元素,在这里前面的元素就是'a'。因此,字符串"aa"可被视为'a'重复了一次。示例3:输入:s="ab",p=".*"输出:
目录一.反转链表思路一反转指针反向:思路二头插法:二.链表的中间节点:三.合并两个有序数组: 思路一:从头开始,取两个链表中小的那个尾插到新链表。定义指针head,tail指向空,代表新链表的头结点。思路二:创建一个空的头指针(哨兵位),优化代码 : 四.环形链表①: 五.环形链表②:分享几个链表经典问题给大家,有不足的地方欢迎指出~感谢支持 づ♡ど 一.反转链表题目: 思路一反转指针反向:设置三个指针变量n1,n2,n3;分别指向NULL,第一个节点,第二个节点。将第n2的next指向n1,n1给n2,n2给n3,然后n3指向下一个节点,当n3=NULL是就不用在移动了,总的循环终止条件是