《代码随想录》数组刷题

本文是计划花一些时间学习《代码随想录》时做一个记录,水平有限,可能理解有误,内容摘抄总结自Carl大佬的,感谢大佬开源的面向算法初学者的好资料

704二分查找

向大家推荐vscode插件 tabnine 插件,刷力扣的时候经常用,很强大的ai提示工具,可以提示出来很多东西。
704二分查找
while循环控制查找区间

27移除元素

快慢指针法,时间O(n)
27移除元素

977有序数组的平方

题目平方这里没什么好弄得,主要是处理有序数组负数平方后的排序混乱。
977有序数组的平方
我直接stl了。

sort(nums.begin(), nums.end(), [](int i, int j) {
            return abs(i) < abs(j);
        });

用了sort排序了,再看carl大佬的题解,原来已经是有序的了,只需要考虑正负数,一头一尾双指针往中间凑,一试时间确实更快,两种方法空间复杂度都是一样的,大概C库函数的排序使用了额外O(n)空间。

209长度最小的子数组

209长度最小的子数组
滑动窗口,主要得注意一些边界条件,提交了很多的wa

  • 样例整体加起来不够target
  • 样例整体加起来正好target
  • 我做的时候一开始先递增指针再算长度,属实是🐖B了

59.螺旋矩阵II

主要是对过程做一个模拟,

  1. 按每一个外环作为一个子步骤,做循环
  2. 或者设定四个循环状态(右下左上),在这个方向走不动的时候(超出边界或单元格已经赋值)就改到下一个状态

复杂度不知道怎么优化,上面这两种都是一样的,写代码的话还是第一种比较快速

class Solution {
public:
    vector<vector<int>> generateMatrix(int n) {
        vector<vector<int>> matrix(n, vector<int>(n, 0));
        int col = 0,row = 0;
        int loop = 0,i = 1;
        while(loop <= n/2){
            for(;col<n - loop;){
                matrix[row][col] = i++;
                col++;
            }
            col--;row++;
            for(;row<n - loop;){
                matrix[row][col] = i++;
                row++;
            }
            row--;col--;
            for(;col>=loop;){
                matrix[row][col] = i++;
                col--;
            }
            col++;row--;
            for(;row>=loop+1;){
                matrix[row][col] = i++;
                row--;
            }
            row++;col++;
            loop++;
        }
        return matrix;
    }
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值