前言
leetcode刷题数组:
这是我第一次开始认真做题和写博客,希望我能一直坚持下去,每天可以做一道题或者两道题然后写博客.养成刷题的习惯,基本上每一次做题我都能惊讶大佬的题解这么巧妙,有时候真的会感觉到智商上的不足,所以只能用量来锻炼自己.我这些题都是跟着别人的推荐做的顺序,从数组开始到后面的贪心,动态规划什么的.一步步做下去深入,坚持锻炼自己的算法能力.希望自己也能写出让别人看到后会惊讶的题解.
leetcode刷题数组题型和技巧
一.数组的二分查找
二分查找是考数组查找最常用的算法,时间复杂度是logn,所以如果题目限定时间复杂度有logn,那么大概就是需要用到二分法,我第一次写二分时也经常考虑少因素.比如循环的判断条件,区间应该取哪里,左下标应该+1还是不需要等.
下面是我刷过的二分查找的题:
二.双指针删除元素
原理是一个指针在前面,一个指针在后面,然后对数据进行操作,每一次根据条件变换位置.
三.滑动窗口
滑动窗口最难的地方在于它的条件,总体想法想出来后如何建立它的条件才是最主要的部分.先把字符一个个加入,然后满足条件后是否需要缩减或者记录.
模板:
int windows[128] = { 0 };
int left = 0,right = 0;
while(right<s.length){
++windows[s[right]]; //扩展
right++;
while(条件){
if(){} //记录
--windows[s[left]]; //缩减
left++;
}
}
后续做到相关的题会继续更新.
版权声明:本文为weixin_46282078原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。