• 2024-11-08代码随想录算法训练营第三十九天|Day39 动态规划
    198.打家劫舍视频讲解:https://www.bilibili.com/video/BV1Te411N7SXhttps://programmercarl.com/0198.%E6%89%93%E5%AE%B6%E5%8A%AB%E8%88%8D.html思路#definemax(a,b)((a)>(b)?(a):(b))introb(int*nums,intnumsSize){if(numsSize==0){re
  • 2024-10-23代码随想录算法训练营第二十四天|Day24 回溯算法
    93.复原IP地址题目链接/文章讲解:https://programmercarl.com/0093.%E5%A4%8D%E5%8E%9FIP%E5%9C%B0%E5%9D%80.html视频讲解:https://www.bilibili.com/video/BV1XP4y1U73i/思路char**result;intresultTop;intsegments[3];intisValid(char*s,intstart,intend){
  • 2024-10-10力扣:搜索插入位置代码实现
    题目给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为 O(logn) 的算法。 python实现classSolution:defsearchInsert(self,nums:List[int],target:int)->i
  • 2024-09-29【leetcode】169.多数元素
    boyer-moore算法最简单理解方法:假设你在投票选人如果你和候选人(利益)相同,你就会给他投一票(count+1),如果不同,你就会踩他一下(count-1)当候选人票数为0(count=0)时,就换一个候选人,但因为和你利益一样的人占比超过了一半不论换多少次,最后留下来的都一定是个和你(利益)相同的人。代码:
  • 2024-09-28算法复杂度-空间
    一.空间复杂度空间复杂度也是一个数学表达式,是对一个算法在运行过程中因为算法的需要额外临时开辟的空间。空间复杂度不是程序占用了多少个bytes的空间,因为常规情况每个对象大小差异不会很大,所以空间复杂度算的是变量的个数。空间复杂度的计算规则基本跟时间复杂
  • 2024-09-16力扣刷题(6)
    两数之和II-输入有序数组两数之和II-输入有序数组-力扣思路:因为该数组是非递减顺序排列,因此可以设两个左右下标当左右下标的数相加大于target时,则表示右下标的数字过大,因此将右下标--当左右下标的数相加小于target时,则表示左下标的数字过小,因此将左下标++当相
  • 2024-09-04【数据结构】时间复杂度空间复杂度
    1、时间复杂度1.1大O渐进表示法大O符号(BigOnotation):是用于描述函数渐进行为的数学符号。推导大O阶方法:用常数1取代运行时间中的所有加法常数。在修改后的运行次数函数中,只保留最高阶项。如果最高阶项存在且不是1,则去除与这个项目相乘的常数。得到的结果就是大O阶
  • 2024-08-25数据结构:189(轮转数组)leetcode(OJ)
    给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。示例1:输入:nums=[1,2,3,4,5,6,7],k=3输出:[5,6,7,1,2,3,4]解释:向右轮转1步:[7,1,2,3,4,5,6]向右轮转2步:[6,7,1,2,3,4,5]向右轮转3步:[5,6,7,1,2,3,4]示例 2:输入:n
  • 2024-07-27代码随想录算法训练营day25:回溯04:491.递增子序列;46.全排列
    491.递增子序列力扣题目链接(opensnewwindow)给定一个整型数组,你的任务是找到所有该数组的递增子序列,递增子序列的长度至少是2。示例:输入:[4,6,7,7]输出:[[4,6],[4,7],[4,6,7],[4,6,7,7],[6,7],[6,7,7],[7,7],[4,7,7]]说明:给定数组的长度不
  • 2024-07-25两数之和-枚举
    题目描述:个人题解:    可以先枚举出数组中的每一个数x,寻找数组中是否存在(target-x),当我们使用遍历整个数组的方式寻找(target-x)时,需要注意到每一个位于x之前的元素都已经和x匹配过,因此不需要再进行匹配。而每一个元素不能被使用两次,所以我们只需要在x
  • 2024-07-06【力扣】每日一题—第217题,存在重复元素
    目录题目:开始思路:更改思路:上代码:题目:给你一个整数数组nums。如果任一值在数组中出现至少两次,返回true;如果数组中每个元素互不相同,返回false。开始思路:暴力求解两重for循环直接出结果,但是超时了!!!超时了命苦!!!更改思路:先排序后遍历成功了哎,不过如此,嘿嘿嘿
  • 2024-06-30C语言力扣刷题11——打家劫舍1——[线性动态规划]
    力扣刷题11——打家劫舍1和2——[线性动态规划]一、博客声明二、题目描述三、解题思路1、线性动态规划 a、什么是动态规划2、思路说明四、解题代码(附注释)一、博客声明  找工作逃不过刷题,为了更好的督促自己学习以及理解力扣大佬们的解题思路,开辟这个系列来记录
  • 2024-06-22238. 除自身以外数组的乘积
    题目给你一个整数数组nums,返回数组answer,其中answer[i]等于nums中除nums[i]之外其余各元素的乘积。题目数据保证数组nums之中任意元素的全部前缀元素和后缀的乘积都在32位整数范围内。请不要使用除法,且在O(n)时间复杂度内完成此题。示例1:输入:nums=
  • 2024-06-12C语言王国——数组的旋转(轮转数组)三种解法
    一、题目给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。示例1:输入:nums=[1,2,3,4,5,6,7],k=3输出:[5,6,7,1,2,3,4]解释:向右轮转1步:[7,1,2,3,4,5,6]向右轮转2步:[6,7,1,2,3,4,5]向右轮转3步:[5,6,7,1,2,3,4]示例
  • 2024-05-26每日一练——两数之和(暴力枚举)
     1.两数之和-力扣(LeetCode)/***Note:Thereturnedarraymustbemalloced,assumecallercallsfree().*/int*twoSum(int*nums,intnumsSize,inttarget,int*returnSize){//i遍历下标for(inti=0;i<numsSize;++i){//j遍历i之后
  • 2024-03-242024-3-24刷题的一个小错误,居然这么基础-_-!!
    力扣刷题刷到简单二分查找时,一运行代码就提示超时,怎么就超时了?反反复复几次,发现(right-left)>>1+left这一步需要在移位运算部分加括号,查了一下,基础中的基础是:移位运算优先级低于“+-*/”我要裂开了……真的好基础!!! intsearchInsert(int*nums,intnumsSize,inttarget){
  • 2024-03-23【力扣】268.丢失的数字
    题目描述给定一个包含[0,n]中n个数的数组nums,找出[0,n]这个范围内没有出现在数组中的那个数。示例1:输入:nums=[3,0,1]输出:2解释:n=3,因为有3个数字,所以所有的数字都在范围[0,3]内。2是丢失的数字,因为它没有出现在nums中。示例2:输入:nums=[0,
  • 2024-03-222367. 算术三元组的数目c
    intcount;voiddfs(int*nums,intnumsSize,intdiff,intindex,intpre,intnowcount){if(index>numsSize||nowcount>3)return;if(index==numsSize&&nowcount<3)return;if(nowcount==3){count++;return;}
  • 2024-03-1655. 跳跃游戏c
    intmax(inti,intj){if(i>j)returni;returnj;}boolcanJump(int*nums,intnumsSize){if(numsSize==1)returntrue;if(nums[0]==0)returnfalse;int*dp=(int*)malloc(sizeof(int)*numsSize);dp[0]=nums[0];intmaxn=dp[0]
  • 2024-03-16376. 摆动序列c
    intmax(inti,intj){if(i>j)returni;returnj;}intwiggleMaxLength(int*nums,intnumsSize){int**dp=(int**)malloc(sizeof(int*)*numsSize);for(inti=0;i<numsSize;i++)dp[i]=(int*)malloc(sizeof(int)*2);dp[0][0]=1,dp[0][1]=
  • 2024-03-16491. 非递减子序列c
    /***Returnanarrayofarraysofsize*returnSize.*Thesizesofthearraysarereturnedas*returnColumnSizesarray.*Note:Bothreturnedarrayand*columnSizesarraymustbemalloced,assumecallercallsfree().*/inttemp[30];voiddfs(int**
  • 2024-03-1690. 子集 IIC
    /***Returnanarrayofarraysofsize*returnSize.*Thesizesofthearraysarereturnedas*returnColumnSizesarray.*Note:Bothreturnedarrayand*columnSizesarraymustbemalloced,assumecallercallsfree().*/inttemp[20];intcmp(constv
  • 2024-03-15169. 多数元素c
    intcmp(constvoid*a,constvoid*b){return*(int*)a-*(int*)b;}intmajorityElement(int*nums,intnumsSize){qsort(nums,numsSize,sizeof(int),cmp);intcount=0,n=numsSize/2,max=nums[0];for(inti=1;i<numsSize;i++){if(nums[i
  • 2024-03-13239. 滑动窗口最大值c
    C语言没有优先队列库,如果自己实现的话在考试是不现实的。优先使用暴力简单的方法加稍微优化尽可能多的过例子。/***Note:Thereturnedarraymustbemalloced,assumecallercallsfree().*/intfindmax(int*nums,inthead,inttail){intmax=nums[head];for
  • 2024-03-101005. K 次取反后最大化的数组和c
    intlargestSumAfterKNegations(int*nums,intnumsSize,intk){intt[201]={0};intsum=0;for(inti=0;i<numsSize;i++){t[100+nums[i]]++;sum+=nums[i];}while(k>0){for(inti=0;i<201;i++){