蔚来面试算法题复盘 发表于 2023-06-13 更新于 2023-06-13
字数总计: 830 阅读时长: 3分钟 阅读量: 南京
面试 算法 面试 蔚来面试算法题复盘 重言 2023-06-13 2023-06-13 旋转数组的最小数字 剑指 Offer 第11题 简单题
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。
给你一个可能存在 重复 元素值的数组 numbers
,它原来是一个升序排列的数组,并按上述情形进行了一次旋转。请返回旋转数组的最小元素。例如,数组 [3,4,5,1,2]
为 [1,2,3,4,5]
的一次旋转,该数组的最小值为 1。
注意,数组 [a[0], a[1], a[2], ..., a[n-1]]
旋转一次 的结果为数组 [a[n-1], a[0], a[1], a[2], ..., a[n-2]]
。
示例1
输入: numbers = [3,4,5,1,2] 输出: 1
示例2
输入: numbers = [2,2,2,0,1] 输出: 0
查看提示
n == numbers.length
1 <= n <= 5000
-5000 <= numbers[i] <= 5000
numbers
原来是一个升序排序的数组,并进行了 1 至 n 次旋转
解题思路:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 class Solution { public int minArray (int [] numbers) { int i = 0 , j = numbers.length - 1 ; while (i < j) { int m = (i + j) / 2 ; if (numbers[m] > numbers[j]) i = m + 1 ; else if (numbers[m] < numbers[j]) j = m; else { int x = i; for (int k = i + 1 ; k < j; k++) { if (numbers[k] < numbers[x]) x = k; } return numbers[x]; } } return numbers[i]; } }
填充每个节点的下一个右侧节点指针 LeetCode 116题 中等题
给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下:1 2 3 4 5 6 struct Node { int val; Node left; Node right; Node next; }
填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL
。 初始状态下,所有 next 指针都被设置为 NULL
。
示例1
输入: root = [1,2,3,4,5,6,7] 输出: [1,#,2,3,#,4,5,6,7,#] 解释: 给定二叉树如图 A 所示,你的函数应该填充它的每个 next 指针,以指向其下一个右侧节点,如图 B 所示。序列化的输出按层序遍历排列,同一层节点由 next 指针连接,’#’ 标志着每一层的结束。
示例2
输入: root = [] 输出: []
查看提示
树中节点的数量在 [0, 212 - 1]
范围内 -1000 <= node.val <= 1000
进阶:
你只能使用常量级额外空间。
使用递归解题也符合要求,本题中递归程序占用的栈空间不算做额外的空间复杂度。
解题思路:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 class Solution { public Node connect (Node root) { if (root==null ) { return root; } LinkedList<Node> queue = new LinkedList <Node>(); queue.add(root); while (queue.size()>0 ) { int size = queue.size(); Node tmp = queue.get(0 ); for (int i=1 ;i<size;++i) { tmp.next = queue.get(i); tmp = queue.get(i); } for (int i=0 ;i<size;++i) { tmp = queue.remove(); if (tmp.left!=null ) { queue.add(tmp.left); } if (tmp.right!=null ) { queue.add(tmp.right); } } } return root; } }