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

发布时间 2023-12-26 07:23:56作者: 酷酷-

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;
    }
}