ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

5.构建乘积数组,二维数组中的查找,旋转数组的最小数字

2021-12-02 09:32:01  阅读:173  来源: 互联网

标签:return 乘积 int length 查找 数组 left shu


1.构建乘积数组

https://leetcode-cn.com/problems/gou-jian-cheng-ji-shu-zu-lcof/

前缀和

位置 0 1 2 3
数组 a[0] a[1] a[2] a[3]
乘积 初始化为 1 a[0] a[1] * a[0] a[2] * a[1] * a[0]
 public int[] constructArr(int[] a) {
        if (a == null || a.length == 0) {
            return a;
        }
        int n = a.length;
        int[] l = new int[n];
        l[0] = 1;
        // 前缀和乘积
        // l[0] = 1
        // l[1] = a[0];
        // l[2] = a[0] * a[1]
        // l[3] = a[0] * a[1] * a[2]
        for (int i = 1; i < n; i++) {
            l[i] = l[i - 1] * a[i - 1];
        }
        int t = 1;
        // 向前递乘
        for (int i = n - 2; i >= 0; i--) {
            t *= a[i + 1];
            l[i] *= t;
        }
        return l;
    }

2.二维数组中的查找

https://leetcode-cn.com/problems/er-wei-shu-zu-zhong-de-cha-zhao-lcof/

	public boolean findNumberIn2DArray(int[][] a, int target) {
        int i = a.length - 1;
        int j = 0;
        // 左下角开始向上方或者右边开始查找,注意合理的边界设置
        while (i >= 0 && j < a[0].length) {
            if (a[i][j] < target) j++;
            else if (a[i][j] > target) i--;
            else return true;
        }
        return false;
    }

3.旋转数组的最小数字

https://leetcode-cn.com/problems/xuan-zhuan-shu-zu-de-zui-xiao-shu-zi-lcof/

 	public int minArray(int[] a) {
        //1.找最大值
        //2.找第一个小于等于最大值的元素
	    int left = 0;
        int right = a.length - 1;
        while (left <= right) {
            int mid = left + (right - left) / 2;
            // 1 2 3 4 5
            if (a[mid] < a[right]) {
                right = mid;
                // 3 4 5 1 2
            } else if (a[mid] > a[right]) {
                left = mid + 1;
            } else {
                // 退出循环 和 缩短序列
                right--;
            }
        }
        return a[left];
    }

2021.12.02 09:20

标签:return,乘积,int,length,查找,数组,left,shu
来源: https://www.cnblogs.com/wrcc/p/15631770.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有