当前位置: 首页 > news >正文

每日5题Day24 - LeetCode 116 - 120

每一步向前都是向自己的梦想更近一步,坚持不懈,勇往直前!

第一题:116. 填充每个节点的下一个右侧节点指针 - 力扣(LeetCode)

/*
// Definition for a Node.
class Node {public int val;public Node left;public Node right;public Node next;public Node() {}public Node(int _val) {val = _val;}public Node(int _val, Node _left, Node _right, Node _next) {val = _val;left = _left;right = _right;next = _next;}
};
*/class Solution {public Node connect(Node root) {//题目已经说了是完美的二叉树,所以每一层都是满的//我们使用栈来实现if(root == null){return root;}Deque<Node> deque = new LinkedList<>();//先把第一个放进来deque.offerLast(root);while(!deque.isEmpty()){Node prev = new Node();int size = deque.size();//对于同一层,不断指向下一个for(int i = 0; i < size; i++){Node node = deque.pollFirst();if(node != null){prev.next = node;}prev = node;if(node.left != null){deque.offerLast(node.left);}if(node.right != null){deque.offerLast(node.right);}}}return root;}
}

第二题:117. 填充每个节点的下一个右侧节点指针 II - 力扣(LeetCode)

/*
// Definition for a Node.
class Node {public int val;public Node left;public Node right;public Node next;public Node() {}public Node(int _val) {val = _val;}public Node(int _val, Node _left, Node _right, Node _next) {val = _val;left = _left;right = _right;next = _next;}
};
*/class Solution {public Node connect(Node root) {//这不是和上一题是一样的吗?if(root == null){return root;}Deque<Node> deque = new LinkedList<>();deque.offerLast(root);while(!deque.isEmpty()){Node prev = new Node();int size = deque.size();for(int i = 0; i < size; i++){Node node = deque.pollFirst();if(node != null){prev.next = node;}prev = node;if(node.left != null){deque.offerLast(node.left);}if(node.right != null){deque.offerLast(node.right);}}}return root;}
}

第三题:118. 杨辉三角 - 力扣(LeetCode)

class Solution {public List<List<Integer>> generate(int numRows) {//因为每一行的的长度都不同,所以要使用ArrayListList<List<Integer>> dp = new ArrayList<>();if(numRows == 0){return dp;}dp.add(new ArrayList<>());dp.get(0).add(1);//注意这里的 i 是指行数,但是dp是从0开始的//所以preRow是i-2for(int i = 2; i <= numRows; i++){List<Integer> row = new ArrayList<>();List<Integer> preRow = dp.get(i-2);row.add(1);for(int j = 1; j < i-1; j++){row.add(preRow.get(j) + preRow.get(j-1));}row.add(1);dp.add(row);}return dp;}
}

第四题:119. 杨辉三角 II - 力扣(LeetCode)

class Solution {public List<Integer> getRow(int rowIndex) {List<List<Integer>> res = new ArrayList<>();if (rowIndex == 0) {return Arrays.asList(1);}res.add(new ArrayList<>());res.get(0).add(1);for (int i = 2; i <= rowIndex + 1; i++) {List<Integer> row = new ArrayList<>();List<Integer> preRow = res.get(i - 2);row.add(1);for (int j = 1; j < i - 1; j++) {row.add(preRow.get(j) + preRow.get(j - 1));}row.add(1);res.add(row);}return res.get(res.size() - 1);}
}

 第五题:120. 三角形最小路径和 - 力扣(LeetCode)

class Solution {public int minimumTotal(List<List<Integer>> triangle) {// 如果三角形为空,返回0if (triangle.size() == 0) {return 0;}// 如果三角形只有一行,直接返回该行的元素值if (triangle.size() == 1) {return triangle.get(0).get(0);}// 创建一个数组来存储当前层到达每个位置的最小路径和int[] dp = new int[triangle.size() + 1];// 从倒数第二层开始向上遍历for (int i = triangle.size() - 1; i >= 0; i--) {// 遍历当前层的每个元素for (int j = 0; j < triangle.get(i).size(); j++) {// 更新当前位置的最小路径和,当前位置的最小路径和等于下一层相邻两个位置的最小值加上当前位置的值dp[j] = Math.min(dp[j], dp[j + 1]) + triangle.get(i).get(j);}}// 返回顶部元素的最小路径和,即为最终结果return dp[0];}
}

http://www.lryc.cn/news/372577.html

相关文章:

  • 在笔记本电脑上使用 LLMs 的 5 种方法
  • Linux内存从0到1学习笔记(8.15 MMU/IOMMU/SMMU概览)
  • Intellij IDEA中怎么配置Maven?
  • 操作系统-内存管理
  • C++中的解释器模式
  • 用 C 语言实现求补码的运算
  • python下载文件
  • JMU 数科 数据库与数据仓库期末总结(1)
  • 前端问题整理
  • 【实践功能记录6】表格列悬浮展示tooltip信息
  • AI论文速读 | 2024[SIGIR]基于大语言模型的下一个兴趣点推荐
  • Rust 实战丨通过实现 json! 掌握声明宏
  • vue+elementUI实现在表格中添加输入框并校验的功能
  • 为国产加油:“缺芯少屏”暂缓,另一领域,也要加把劲
  • 【Qnx】Qnx coredump解析
  • 超级签名源码/超级签/ios分发/签名端本地linux服务器完成签名
  • RocketMQ在Centos7系统上单机部署
  • Vue37-非单文件组件
  • CSS实现经典打字小游戏《生死时速》
  • 推箱子-小游戏
  • AI数字人的开源解决方案
  • java写一个验证码
  • 【星海随笔】ELK优化
  • SQL Auto Increment
  • 网络安全练气篇——PHP编程语言基础
  • LabVIEW程序内存泄漏分析与解决方案
  • JVM垃圾回收器介绍
  • subprocess隐藏cmd窗口
  • 编程前端看什么书比较好:深入解析与推荐
  • HarmonyOS(36) DevEco Studio 配置debug和release