力扣labuladong一刷day7共3题

编程入门 行业动态 更新时间:2024-10-26 14:33:12

<a href=https://www.elefans.com/category/jswz/34/1766191.html style=力扣labuladong一刷day7共3题"/>

力扣labuladong一刷day7共3题

力扣labuladong一刷day7共3题

文章目录

      • 力扣labuladong一刷day7共3题
      • 一、216. 组合总和 III
      • 二、111. 二叉树的最小深度
      • 三、752. 打开转盘锁

一、216. 组合总和 III

题目链接:/
思路:还是组合只是既有n又有k。

class Solution {List<List<Integer>> arrayLists = new ArrayList<>();List<Integer> list = new ArrayList<>();int sum = 0;public List<List<Integer>> combinationSum3(int k, int n) {backTracking(k, n, 1);return arrayLists;}void backTracking(int k, int n, int index) {if (list.size() == k && sum == n) {arrayLists.add(new ArrayList<>(list));return;}if (list.size() > k) return;for (int i = index; i <= 9 && sum+i <= n; i++) {sum += i;list.add(i);backTracking(k, n, i+1);sum -= i;list.remove(list.size()-1);}}
}

二、111. 二叉树的最小深度

题目链接:/
思路:采用层序遍历。

public int minDepth(TreeNode root) {if (root == null) return 0;Deque<TreeNode> queue = new LinkedList<>();queue.add(root);int deep = 0;while (!queue.isEmpty()) {int size = queue.size();deep++;for (int i = 0; i < size; i++) {TreeNode node = queue.poll();if (node.left != null) queue.add(node.left);if (node.right != null) queue.add(node.right);if (node.left == null && node.right == null) {return deep;}}}return deep;}

三、752. 打开转盘锁

题目链接:/
思路:相当于一个点每次周围有8个点可以走,bfs。

class Solution {public int openLock(String[] deadends, String target) {Set<String> visited = new HashSet<>();Set<String> set = new HashSet<>();for (String deadend : deadends) {set.add(deadend);}Deque<String> queue = new LinkedList<>();queue.add("0000");visited.add("0000");int keep = 0;while (!queue.isEmpty()) {int size = queue.size();for (int i = 0; i < size; i++) {String cur = queue.poll();if (cur.equals(target)) return keep;if (set.contains(cur)) continue;for (int j = 0; j < 4; j++) {String up = upOne(cur, j);if (!visited.contains(up)) {queue.add(up);visited.add(up);}String down = downOne(cur, j);if (!visited.contains(down)) {queue.add(down);visited.add(down);}}}keep++;}return -1;}String upOne(String s, int i) {char[] chars = s.toCharArray();if (chars[i] == '9') {chars[i] = '0';}else {chars[i] += 1;}return new String(chars);}String downOne(String s, int i) {char[] chars = s.toCharArray();if (chars[i] == '0'){chars[i] = '9';}else {chars[i] -= 1;}return new String(chars);}}

更多推荐

力扣labuladong一刷day7共3题

本文发布于:2023-11-15 03:10:42,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1592697.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:力扣   labuladong

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!