leetcode刷题数组篇总结

文章目录

  • 前言
    • leetcode刷题数组题型和技巧
      • 一.数组的二分查找
      • 二.双指针删除元素
      • 三.滑动窗口


前言

leetcode刷题数组:

这是我第一次开始认真做题和写博客,希望我能一直坚持下去,每天可以做一道题或者两道题然后写博客.养成刷题的习惯,基本上每一次做题我都能惊讶大佬的题解这么巧妙,有时候真的会感觉到智商上的不足,所以只能用量来锻炼自己.我这些题都是跟着别人的推荐做的顺序,从数组开始到后面的贪心,动态规划什么的.一步步做下去深入,坚持锻炼自己的算法能力.希望自己也能写出让别人看到后会惊讶的题解.


leetcode刷题数组题型和技巧

一.数组的二分查找

二分查找是考数组查找最常用的算法,时间复杂度是logn,所以如果题目限定时间复杂度有logn,那么大概就是需要用到二分法,我第一次写二分时也经常考虑少因素.比如循环的判断条件,区间应该取哪里,左下标应该+1还是不需要等.

下面是我刷过的二分查找的题:

  • 34_ 在排序数组中查找元素的第一个和最后一个位置

  • 35. 搜索插入位置

  • 69. x 的平方根

  • 367. 有效的完全平方数

二.双指针删除元素

原理是一个指针在前面,一个指针在后面,然后对数据进行操作,每一次根据条件变换位置.

  • 26._删除有序数组中的重复项

  • 27._移除元素

  • 283. 移动零

  • 844.比较含退格的字符串

  • 977. 有序数组的平方

三.滑动窗口

滑动窗口最难的地方在于它的条件,总体想法想出来后如何建立它的条件才是最主要的部分.先把字符一个个加入,然后满足条件后是否需要缩减或者记录.

模板:

int windows[128] = { 0 };
int left = 0,right = 0;
while(right<s.length){
	++windows[s[right]];		//扩展
	right++;
	while(条件){
		if(){}					//记录
		--windows[s[left]];		//缩减
		left++;
	}
}
  • 53_最大子序和

  • 76. 最小覆盖子串

  • 209. 长度最小的子数组

  • 904. 水果成篮

后续做到相关的题会继续更新.

你可能感兴趣的:(leetcode刷题/数组,算法,数据结构,c++,数组,leetcode)