0
点赞
收藏
分享

微信扫一扫

中医舌苔笔记

萨科潘 03-08 15:00 阅读 2
算法

一、基本理解

顾名思义,就是题目要求做什么,代码中就跟着做就可以。

二、题目练习

1252. 奇数值单元格的数目

根据题目要求列出如下代码。需要注意填充列和行的时候注意下标。

int oddCells(int m, int n, int** indices, int indicesSize, int* indicesColSize) {
    int mat[60][60];
    memset(mat, 0, sizeof(mat));

    for(int i = 0; i < indicesSize; ++i) {
        int r = indices[i][0];
        int c = indices[i][1];
        //填充列
        for(int j = 0; j < m; ++j) {
            mat[j][c]++;
        }
        //填充行
        for(int j = 0; j < n; ++j) {
            mat[r][j]++;
        }
    }
    int ret = 0;
    for(int i = 0; i < m; ++i) {
        for(int j = 0; j < n; ++j) {
            if(mat[i][j] % 2 == 1) {
                ret++;
            }
        }
    }
    return ret;
}

以下的题目都是一些模拟的题目,可以按需练习。

1、基于数组

利用数组的数据结构,根据题目要求,去实现算法,如:1920. 基于排列构建数组、1389. 按既定顺序创建目标数组、1603. 设计停车系统、2149. 按符号重排数组、2221. 数组的三角和

2、基于字符串

利用字符串的数据结构,根据题目要求,去实现算法,如:2011. 执行操作后的变量值、2744. 最大字符串配对数目、LCP 17. 速算机器人、537. 复数乘法

3、基于链表

利用链表的数据结构,根据题目要求,去实现算法,如:2181. 合并零之间的节点、1823. 找出游戏的获胜者

4、基于矩阵

利用矩阵的数据结构,根据题目要求,去实现算法,如:2120. 执行所有后缀指令、1252. 奇数值单元格的数目、832. 翻转图像、657. 机器人能否返回原点、289. 生命游戏、59. 螺旋矩阵 II、885. 螺旋矩阵 III

5、基于栈

利用栈的数据结构,如:1441. 用栈操作构建数组

6、基于队列

利用队列的数据结构,如:1700. 无法吃午餐的学生数量

二、算法技巧

模拟时一般会用到一些算法技巧,或者说混合算法,比如 排序、递归、迭代 等等。

1、排序

排序后,干一件事情,如:950. 按递增顺序显示卡牌

2、递归

需要借助递归来实现,如:1688. 比赛中的配对次数 、2169. 得到 0 的操作数、258. 各位相加

3、迭代

不断迭代求解,其实就是利用 while 循环来实现功能,如:1860. 增长的内存泄露、258. 各位相加

举报

相关推荐

0 条评论