209 长度最小的子数组
关键点1:暴力法其实相当于两个指针,一指针相对禁止时,另一指针遍历,时间复杂度大。
关键点2:滑动窗口法其实是双指针法的一种,群里用“毛毛虫”的比喻很形象,在这里两个指针并不是一静止、一运动,而是同时运动。
关键点3:使用while循环而不是for循环,因为毛毛虫往前吃掉的可能比较大,需要多“拉”几个数出来,至于几个不知道,所以用while;
关键点4:在while循环里每次用nums[i++];
59 螺旋数组
没有花哨的求解,只能一步步理清过程
关键点1:明确原则,最好用左闭右开,因为左闭右闭时行遍历完,列只能遍历n-1个,对角是公共点;
关键点2:循环遍历,确定循环几次以及每次循环起点(每次加1)
关键点3:n为奇数时,中心点单独处理。
58 区间和
cin >> i;cin >> &result[i]
关键点1:存储输入的键盘值。scanf("%d",&result[i]);
关键点2:创建一维数组,存储逐行相加值,[a,b]区间和是p[b]-p[a-1],a为0时除外
44开发商购买土地
创建初始化的二维vector数组
vector<vector<int>> result(n,vector<int>(m,0));
关键点1:接收键盘值cin >> vec[i][j];
关键点2:result = min(result,abs(sum - horicut - horicut));之所以减两次是求分开两部分的差值。