- 2025-01-08启航数据结构算法之绮旅,漫步C++智慧之道——LeetCode题海探幽:轮转数组之多元策略演绎
人无完人,持之以恒,方能见真我!!!共同进步!!文章目录复杂度练习之轮转数组方法1方法2方法3总结复杂度练习之轮转数组题目链接:轮转数组为什么我们把这道题作为复杂度的练习题呢?是因为我们以后做题都会涉及到复杂度的计算,我们要保证我们写的程序不会超出题目的时间
- 2024-12-27【Leetcode刷题随笔】977 有序数组的平方
1.题目描述给你一个按非递减顺序排序的整数数组nums,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。示例:输入:nums=[-4,-1,0,3,10]输出:[0,1,9,16,100]解释:平方后,数组变为[16,1,0,9,100]排序后,数组变为[0,1,9,16,100]2.解题方法2.1方法一:直接排序最
- 2024-12-24leetcode刷题
思路分析对于每一个房间,只有选或不选两种结果,假设第i个房间选了那么第i-1个房间就不能选。构建状态转移方程dp[i]=max(dp[i-1],dp[i-2]+nums[i]).意思是当偷到第i个房间时,最大的结果应该在偷不偷上一个房间(dp[i-2]+nums[i]也就是偷第i-2个房间和第i个房间的金额)偷上一个房
- 2024-11-27LeetCode移除元素
给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素。元素的顺序可能发生改变。然后返回 nums 中与 val 不同的元素的数量。假设 nums 中不等于 val 的元素数量为 k,要通过此题,您需要执行以下操作:更改 nums 数组,使 nums 的前 k 个
- 2024-11-24基于动态规划的异种打家劫舍问题
打家劫舍问题: 你是一个小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数
- 2024-11-29csp-j初赛模拟试题(解析)
题目:在C++中,以下哪个关键字用于实现多态性?A.virtualB.staticC.externD.const以下数据结构中,不属于线性结构的是()。A.栈B.队列C.二叉树D.链表一个有8个顶点的无向图,若每个顶点的度都为3,则该图共有()条边。A.12B.24C.16D.8以下关于栈的说法中,正确
- 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-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]=