【算法】【思想】做算法题中的一些思想总结

1  小技巧

// 数字 char 怎么得到它的 int
char c = '5';
int num = c - '0' + 1;

2  思想

2.1  给定数的下一个接近的数

比如 241532 的下一个数 242135,主要是思想,从右往左找到第一个出现降序的,找到 15,然后从右边找到第一个比 1 大的,也就是 2,那么交换 1和2 现在变成 242531 ,然后把 2 后的 531 升序排列即可得到。

3  数组元素怎么找每个元素的左侧最大值或者右侧的最大值

比如左侧来说:第一个元素的左侧最大值就是它自己

那么第二个以上元素的左侧最大值就是当前元素跟上一个元素的最大值比较,哪一个比较大,哪个就是当前元素的最大值(因为上一个元素的最大值,也是一步步比较来的,是不是,只需要跟上一个元素的最大值比较即可)

复制代码
class Solution {
    public int[] getFindMax(int[] arr) {
        int[] leftMax = new int[arr.length];
        // 第一个元素的最大值就是自己
        leftMax[0] = arr[0];

        // 从一个元素开始遍历
        for (int i = 1; i < arr.length; i++) {
            leftMax[i] = Math.max(leftMax[i - 1], arr[i]);
        }
        return leftMax;
    }
}
复制代码

4  n*n 2维矩阵翻转

4.1  上下翻转

// 上下翻转 n数组长度 i行取半 j列全取
for (int i = 0; i < n / 2; i++) {
    for (int j = 0; j < n; j++) {
     // i取对向 j不变
        swap(matrix, i, j, n - i - 1, j);
    }
}

4.2  左右翻转

// 左右翻转 n数组长度 i行全取 j列取半
for (int i = 0; i < n; i++) {
    for (int j = 0; j < n / 2; j++) {
        // i行不变 j取对向
        swap(matrix, i, j, i, n - j - 1);
    }
}

4.3  左上到右下对角线翻转

// 左上到右下对角线翻转 n数组长度 i行取n-1 j列取i
// 从第二行开始
for (int i = 1; i < n; i++) {
    // 每行取 i 个 
    for (int j = 0; j < i; j++) {
        swap(matrix, i, j, j, i);
    }
}

4.4  左下到右上对角线翻转

// 左下到右上对角线翻转 n数组长度 i行取n-1 j列取 n-i-1
// 从第一行开始
for (int i = 0; i < n - 1; i++) {
    // 每行取 n-i-1 个
    for (int j = 0; j < n-i-1; j++) {
        swap(matrix, i, j, j, i);
    }
}

给读者们抱歉,图我先欠着,没好好画哈。

5  位运算的知识

https://leetcode.cn/circle/discuss/CaOJ45/

6  链表删除倒数第n个

比如有10个节点,删除倒数第2个,双指针法

第一个指针先遍历 2个,然后第二个指针还是从头开始遍历,当第一个指针遍历到尾部时,第二个指针的下一个节点就是要被删除的节点,第二个指针跟第一个指针相差2个节点。

7  二维数组

int[][] intervals;
// 对数组按左坐标进行升序排序
Arrays.sort(intervals, Comparator.comparingInt(o -> o[0]));
// 定义返回结果
List<int[]> res = new ArrayList<>();
res.add(new int[]{left, right});
int[][] arr = res.toArray(new int[res.size()][]);

 

posted @   酷酷-  阅读(16)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
历史上的今天:
2022-12-26 【问题记录】【SpringBoot】【Swagger】启动的时候,有一堆Swagger冲突的日志,看着不爽 Generating unique operation named
2022-12-26 【问题记录】【SpringBoot】启动不加载某个Starter,通过代码控制某个Starter加载
2022-12-26 【问题记录】【SpringBoot】Filter中抛出的异常不会走RestControllerAdvice全局异常捕获
点击右上角即可分享
微信分享提示