每日三题-旋转图像、合并区间、除自身以外数组的乘积

简介: 每日三题-旋转图像、合并区间、除自身以外数组的乘积

旋转图像


564263e6b93b44a086c78ea9972c9e0b.png

class Solution {
    public void rotate(int[][] matrix) {
        int n = matrix.length;
        for (int i = 0; i < n / 2; ++i) {
            for (int j = 0; j < n; ++j) {
                int temp = matrix[i][j];
                matrix[i][j] = matrix[n - i - 1][j];
                matrix[n - i - 1][j] = temp;
            }
        }
        for (int i = 0; i < n; ++i) {
            for (int j = 0; j < i; ++j) {
                int temp = matrix[i][j];
                matrix[i][j] = matrix[j][i];
                matrix[j][i] = temp;
            }
        }
    }
}


合并区间


dad326390dca4ec4bebdc8c6176fe6fb.png

class Solution {
    public int[][] merge(int[][] intervals) {
        Arrays.sort(intervals,(a,b)->{
            if(a[0] != b[0]) return a[0] - b[0];
            else return a[1] - b[1];
        });
        int st = -1,ed = -1;
        List<Integer[]> res = new ArrayList<>();
        for(int i = 0;i < intervals.length;i++){
            if(ed < intervals[i][0]){
                //找到一个新的区间
                if(ed != -1) res.add(new Integer[]{st,ed});
                st = intervals[i][0];
                ed = intervals[i][1];
            }
            // 有交集
            else ed = Math.max(ed,intervals[i][1]);
        }
        if(ed != -1) res.add(new Integer[]{st,ed});
        int [][] ans = new int[res.size()][2];
        int i = 0;
        for(Integer[] a : res){
            ans[i][0] = a[0];
            ans[i++][1] = a[1];
        }
        return ans;     
    }
}


除自身以外数组的乘积


f8afae6c951842bc85f73581fb5f48b3.png

class Solution {
    public int[] productExceptSelf(int[] nums) {
        int length = nums.length;
        // L 和 R 分别表示左右两侧的乘积列表
        int[] L = new int[length];
        int[] R = new int[length];
        int[] answer = new int[length];
        L[0] = 1;
        for (int i = 1; i < length; i++) {
            L[i] = nums[i - 1] * L[i - 1];
        }
        R[length - 1] = 1;
        for (int i = length - 2; i >= 0; i--) {
            R[i] = nums[i + 1] * R[i + 1];
        }
        for (int i = 0; i < length; i++) {
            answer[i] = L[i] * R[i];
        }
        return answer;
    }
}


相关文章
|
3月前
|
人工智能 移动开发 算法
【动态规划】【C++算法】LeetCoce996正方形数组的数目
【动态规划】【C++算法】LeetCoce996正方形数组的数目
|
4月前
leetcode-435:无重叠区间
leetcode-435:无重叠区间
17 0
|
5月前
|
存储 机器学习/深度学习 算法
【算法训练-数组 三】【数组矩阵】螺旋矩阵、旋转图像、搜索二维矩阵
【算法训练-数组 三】【数组矩阵】螺旋矩阵、旋转图像、搜索二维矩阵
36 0
|
20天前
|
算法 测试技术 C#
【动态规划】【前缀和】【和式变换】100216. K 个不相交子数组的最大能量值
【动态规划】【前缀和】【和式变换】100216. K 个不相交子数组的最大能量值
|
3月前
|
测试技术
【深度优先搜索】【组合数学】【动态规划】1467.两个盒子中球的颜色数相同的概率
【深度优先搜索】【组合数学】【动态规划】1467.两个盒子中球的颜色数相同的概率
|
5月前
|
算法 程序员 测试技术
【算法训练-二分查找 二】【旋转二分】旋转排序数组的最小数字、旋转排序数组的指定数字
【算法训练-二分查找 二】【旋转二分】旋转排序数组的最小数字、旋转排序数组的指定数字
21 0
【算法训练-二分查找 二】【旋转二分】旋转排序数组的最小数字、旋转排序数组的指定数字
|
9月前
|
算法
算法篇之二分查找(第74题探索二维矩阵、第287题寻找重复数)
算法篇之二分查找(第74题探索二维矩阵、第287题寻找重复数)
74 0
|
10月前
|
人工智能 算法 BI
贪心算法——区间选点与最大不相交区间数
贪心算法——区间选点与最大不相交区间数
45 0
【LeetCode】移动零&&颜色分类&&有序数组的平方&&有效的山脉数组
【LeetCode】移动零&&颜色分类&&有序数组的平方&&有效的山脉数组
【LeetCode】移动零&&颜色分类&&有序数组的平方&&有效的山脉数组
|
Python
LeetCode 435. 无重叠区间
给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠。
74 0