算法训练营Day1
数组在内存中的分布,存放在连续内存空间上,数组的元素是不能删的,只能覆盖。
练习了二分查找,关键点在于数据的区间,循环不变量。
https://leetcode.cn/problems/binary-search/description/
移除元素,有序数组的平方,练习了双指针的用法,双指针法(快慢指针法): 通过一个快指针和慢指针在一个for循环下完成两个for循环的工作。
https://leetcode.cn/problems/remove-element/description/
https://leetcode.cn/problems/squares-of-a-sorted-array/description/
复习了冒泡排序的实现
int n = arr.size();
for (int i = 0; i < n - 1; i++) {          // 外层循环控制轮次
for (int j = 0; j < n - i - 1; j++) {  // 内层循环比较相邻元素
if (arr[j] > arr[j + 1]) {         // 如果顺序错误,则交换
std::swap(arr[j], arr[j + 1]);
}
}
}
寻找长度最小的子数组,运用滑动窗口的解法,本质上是双指针的思想,所谓滑动窗口,就是不断的调节子序列的起始位置和终止位置,从而得出我们想要的结果。根据当前子序列和大小的情况,不断调节子序列的起始位置。从而将O(n^2)暴力解法降为O(n)。
https://leetcode.cn/problems/minimum-size-subarray-sum/description/
螺旋矩阵,本题并不涉及到什么算法,就是模拟过程,重点是转圈的边界问题,坚持循环不变量这一原则。
https://leetcode.cn/problems/spiral-matrix-ii/submissions/643653330/
                    
                
                
            
        
浙公网安备 33010602011771号