IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> Java 第 19 课 448. 找到所有数组中消失的数字 118. 杨辉三角 -> 正文阅读

[数据结构与算法]Java 第 19 课 448. 找到所有数组中消失的数字 118. 杨辉三角

448. 找到所有数组中消失的数字

遍历数组,j = nums[i] - 1 作为索引,nums[j] 增加 n,这样会保留原数组的信息,即 nums[j] % n 能还原数组。再次遍历数组,如果 nums[i] 小于等于 n,索引 i + 1 就是数组中消失的数字。

class Solution:
    def findDisappearedNumbers(self, nums: List[int]) -> List[int]:
        n = len(nums)
        for e in nums:
            j = (e - 1) % n # 还原数组
            nums[j] += n        
        return [i + 1 for i, x in enumerate(nums) if x <= n]
class Solution {
    public List<Integer> findDisappearedNumbers(int[] nums) {
        int n = nums.length;
        for (int i = 0; i < n; i++){
            int x = Math.abs(nums[i]) - 1; // 还原
            if (nums[x] > 0) nums[x] *= -1; // 取反,保留原数的信息
        }
        List<Integer> res = new ArrayList<>();
        for (int i = 0; i <  n; i++){
            if (nums[i] > 0) res.add(i + 1); // 前一个 for 没有修改过
        }
        return res;
    }
}

118. 杨辉三角

class Solution:
    def generate(self, numRows: int) -> List[List[int]]:
        res = []
        for i in range(numRows):
            tmp = [1] * (i + 1)
            for j in range(1, i):
                tmp[j] = res[-1][j-1] + res[-1][j]
            res.append(tmp)      
        return res
class Solution {
    public List<List<Integer>> generate(int numRows) {        
        List<List<Integer>> tri = new ArrayList<>();
        for (int i = 0; i < numRows; i++) {
            List<Integer> row = new ArrayList<>();
            for (int j = 0; j <= i; j++) {
                if (j == 0 || j == i) row.add(1);
                else row.add(tri.get(i-1).get(j-1) + tri.get(i-1).get(j));                
            }            
            tri.add(row);
        }
        return tri;
    }
}

class Solution {
    public List<List<Integer>> generate(int numRows) {
        List<Integer> row = new ArrayList<>();
        List<List<Integer>> tri = new ArrayList<>();
        for (int i = 0; i < numRows; i++) {
            row.add(0, 1); // 0 位置插入
            for (int j = 1; j < i; j++) { //i = row.size() - 1
                row.set(j, row.get(j) + row.get(j + 1));
            }
            tri.add(new ArrayList<Integer>(row)); // row 拷贝
        }
        return tri;
    }
}

妙在 row.add(0, 1); 和 tri.add(new ArrayList(row));

每一行数据生成都用同一个 ArrayList 对象储存,注意 add 和 set 的妙用,使得一行中 ArrayList 既存储了上一行数据,又有当前行的新数据,然后 tri.add(new ArrayList(row)); 用 row 构造初始化新的对象存入杨辉三角。

class Solution {
    public List<List<Integer>> generate(int numRows) {       
        List<List<Integer>> tri = new ArrayList<>();
        for (int i = 0; i < numRows; i++) {
            Integer[] row = new Integer[i + 1];
            Arrays.fill(row, 1);
            for (int j = 1; j < i; j++) {                
                row[j] = tri.get(i-1).get(j-1) + tri.get(i-1).get(j);
            }
            tri.add(Arrays.asList(row)); // 包装类数组 转 List
        }
        return tri;
    }
}

基础知识

Java ArrayList

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-04-07 22:56:50  更:2022-04-07 22:59:55 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 9:29:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码