每日一题数组篇

文章介绍了如何使用二分查找法在有序数组中查找元素,双指针策略移除元素,以及在有序数组平方和长度最小子数组问题中应用的两种方法——暴力破解和双指针优化。特别强调了滑动窗口的概念及其在解决长度最小子数组问题中的高效应用。
摘要由CSDN通过智能技术生成

1.二分查找

这个问题不难,你想要找到其中一个数,那就只能在数组的两边找到最大的索引和最小的索引,然后找到中间的那个索引,然后让这个索引上的数与目标数比较,如果目标数大于该数,就代表最左边的索引需要增加,相反如果目标书小于该数,就代表最右边的数需要减少,然后查找就欧克了

但是需要注意的是,别忘了咱还需要判断这个数是否在这个数组中。

上代码

2.移除元素

这一个题目的话,咱可以使用双指针法来进行,设定两个指针,然后让这两个指针在同一起点开始,依次移动,不同的是一快一慢,然后当快指针的数值不等于val时,就慢指针就移动到快指针上,然后如果相等,就慢指针不变,然后快指针还是移动,然后不同的时候慢指针移动到快指针上然后就删除了

然后返回慢指针就OK了,上代码

3.有序数组的平方

这个题在我看来有两个解法,一个是暴力破解法,另一个时双指针

暴力破解法是先遍历平方,然后再冒泡排序

然后是双指针法

就这个题目提供的数组其实也是一种从小到大的顺序,然后我们设计两个指针,一个指向头一个指向尾部,然后比较排序就可以了

4.长度最小的子数组

这一道题我们可以使用两层for循环来解决,这样就太没有技术含量了,我们使用滑动窗口的方式来解决

什么叫做滑动窗口,他的意思的要找到最小的子数组,也就是咱可以定义两个指针在起始位置,然后在利用for循环来移动其中一个指针就比如说right吧另一个就是left,然后定义一个sum来计算总和,然后咱不是说要返回长度吗 而且还是最短的,所以咱就要在for循环之前定义个result它等于最大的数,然后就在,当sum>=target的时候,比较result和两个指针之间的长度,然后返回一个短的了,然后sum=sum-nums【left++】;然后如果减完之后他还大,那就继续比较,写一遍就明白了

然后上代码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值