2026.1.13力扣刷题笔记

题目:

解答:

cpp 复制代码
int** generate(int numRows, int* returnSize, int** returnColumnSizes) {
    int** ret=malloc(sizeof(int*)*numRows);//申请二维数组的行指针
    *returnSize=numRows;//用于告知调用函数此二维数组的行数
    *returnColumnSizes=malloc(sizeof(int)*numRows);//告诉每行的长度step1
    for(int i=0;i<numRows;i++){
        ret[i]=malloc(sizeof(int)*(i+1));//申请每行的空间大小
        (*returnColumnSizes)[i]=i+1;//为每行的长度填写值
        ret[i][0]=ret[i][i]=1;
        for(int j=1;j<i;j++){
            ret[i][j]=ret[i-1][j-1]+ret[i-1][j];
        }
    }return ret;
}
心得:这道题不会,设计到二维数组的构造,注意给出注释的地方。

int* :给你一个地址,你可以直接在那里写东西(调用者已准备好空间)。

int**:给你一个地址的地址**,你需要:

  1. 先在那个地址放一个新的地址(malloc)

  2. 然后用那个新地址访问数组元素

题目:

解答:

cpp 复制代码
int singleNumber(int* nums, int numsSize) {
    int resul=0;
    for(int i=0;i<numsSize;i++){
        resul^=nums[i];
    }
    return resul;
}
心得:题目要求O(n)时间复杂度,所以使用排序再消除行不通。这里使用了异或的手段,"^"消除偶数个,只留下奇数个的数字。

题目:

解答:

cpp 复制代码
int majorityElement(int* nums, int numsSize) {
    int x = nums[0];
    int count = 0;
    for (int i = 0; i < numsSize; i++) {
        if (nums[i] == x)
            count++;
        else
            count--;
        if (count <= 0) {
            x = nums[i];
            count = -count;
        }
    }
    return x;
}
心得:拿到这种题总想到排序,感觉不是好习惯.....这道题应该是王道书上有的,采用的方法就是巧用寻找的数总是多于其他的数,然后遇到目标数就++,否则--,最终哪个更多就是哪个。

明天要开始中等题,fighting!

相关推荐
INGNIGHT6 小时前
270 · 电话号码的字母组合II(Trie)
linux·算法
马可家的菠萝6 小时前
你收藏的资料,有多少真的被你第二次打开过?
笔记·知识管理·效率提升·个人知识库
2401_839080546 小时前
C++常见八股
数据结构·c++·算法
青山是哪个青山7 小时前
LeetCode 188:买卖股票的最佳时机 IV
算法
mikuyyds7 小时前
geo-toolbox 插件算法解析:RUSLE 与 MUSLE 的工程化落地
算法·rust·gis
Tisfy7 小时前
LeetCode 3498.字符串的反转度:一次遍历
leetcode·字符串·题解·遍历
a187927218317 小时前
【算法】树(二):队列与祖先——BFS 骨架三配件、短路透传与合流
算法·leetcode·二叉树··bfs·算法讲解·树遍历
小刘在重生~7 小时前
Java Lock 显式锁案例|ReentrantLock 解决多线程安全问题(超详细实战)
java·笔记·面试
职豚求职小程序7 小时前
中国人寿27秋招笔试[特殊字符]北森机考|备考攻略
笔记
江湖人称菠萝包7 小时前
【Qt】《Qt 5.9 C++开发指南》笔记-Chapter9-Qt Charts
笔记·qt·qt5