2021.4.9

154. 寻找旋转排序数组中的最小值II

https://leetcode-cn.com/problems/find-minimum-in-rotated-sorted-array-ii/
已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。例如,原数组 nums = [0,1,4,4,5,6,7] 在变化后可能得到:
若旋转 4 次,则可以得到 [4,5,6,7,0,1,4]
若旋转 7 次,则可以得到 [0,1,4,4,5,6,7]
注意,数组 [a[0], a[1], a[2], ..., a[n-1]] 旋转一次 的结果为数组 [a[n-1], a[0], a[1], a[2], ..., a[n-2]]

给你一个可能存在 重复 元素值的数组 nums ,它原来是一个升序排列的数组,并按上述情形进行了多次旋转。请你找出并返回数组中的 最小元素 。

学习力扣

2021.4.8

153. 寻找旋转排序数组中的最小值

https://leetcode-cn.com/problems/find-minimum-in-rotated-sorted-array/
已知一个长度为 n 的数组,预先按照升序排列,经由 1n旋转 后,得到输入数组。例如,原数组 nums = [0,1,2,4,5,6,7] 在变化后可能得到:
 若旋转 4 次,则可以得到 [4,5,6,7,0,1,2]
 若旋转 7 次,则可以得到 [0,1,2,4,5,6,7]
注意,数组 [a[0], a[1], a[2], ..., a[n-1]] 旋转一次 的结果为数组 [a[n-1], a[0], a[1], a[2], ..., a[n-2]]

给你一个元素值 互不相同 的数组 nums ,它原来是一个升序排列的数组,并按上述情形进行了多次旋转。请你找出并返回数组中的 最小元素

学习力扣

“/2”和”>>1”的区别

 写优先级队列的时候发现,-1/2的值为0,当时是在一个循环中将一个值/2-1,然后循环执行,结果进入死循环了。
 改成>>1后,不再死循环,原因是-1 >> 1 = -1
 于是百度了一下两者的区别,找到了这个

学习计组

2021.4.7

81. 搜索旋转排序数组II

https://leetcode-cn.com/problems/search-in-rotated-sorted-array-ii/
81. 搜索旋转排序数组 II
已知存在一个按非降序排列的整数数组 nums ,数组中的值不必互不相同。

在传递给函数之前,nums 在预先未知的某个下标 k0 <= k < nums.length)上进行了 旋转 ,使数组变为 [nums[k], nums[k+1], ..., nums[n-1], nums[0], nums[1], ..., nums[k-1]](下标 从 0 开始 计数)。例如, [0,1,2,4,4,4,5,6,6,7] 在下标 5 处经旋转后可能变为 [4,5,6,6,7,0,1,2,4,4]

给你 旋转后 的数组 nums 和一个整数 target ,请你编写一个函数来判断给定的目标值是否存在于数组中。如果 nums 中存在这个目标值 target ,则返回 true ,否则返回 false

学习力扣

2021.4.2

面试题 17.21. 直方图的水量(42. 接雨水)

https://leetcode-cn.com/problems/volume-of-histogram-lcci/

给定一个直方图(也称柱状图),假设有人从上面源源不断地倒水,最后直方图能存多少水量?直方图的宽度为 1。

上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的直方图,在这种情况下,可以接 6 个单位的水(蓝色部分表示水)。 感谢 Marcos 贡献此图。

学习力扣

由力扣90.子集II引发的对于C#中的List和C++中的vector区别的思考

引言:解题的思考过程

&emsp;昨天的力扣每日一题: 90.子集II
&emsp;最初我看到这一题时,想到了在 1178.猜字谜 中学到的位掩码,使用位掩码可以将集合压缩为一个二进制数,从而能够很方便地求出这个集合的子集。
&emsp;在对这一题进行编码求解时,我最初使用语言的是C#,力扣提供的C#模板是这样的:

public class Solution {
    public IList<IList<int>> SubsetsWithDup(int[] nums) {
    }
}
学习C#C++

2021.3.28

173. 二叉搜索树迭代器

https://leetcode-cn.com/problems/binary-search-tree-iterator/
实现一个二叉搜索树迭代器类BSTIterator ,表示一个按中序遍历二叉搜索树(BST)的迭代器:
&emsp;BSTIterator(TreeNode root) 初始化 BSTIterator 类的一个对象。BST 的根节点 root 会作为构造函数的一部分给出。指针应初始化为一个不存在于 BST 中的数字,且该数字小于 BST 中的任何元素。
&emsp;boolean hasNext() 如果向指针右侧遍历存在数字,则返回 true ;否则返回 false
&emsp;int next()将指针向右移动,然后返回指针处的数字。
注意,指针初始化为一个不存在于 BST 中的数字,所以对 next() 的首次调用将返回 BST 中的最小元素。

你可以假设 next() 调用总是有效的,也就是说,当调用 next() 时,BST 的中序遍历中至少存在一个下一个数字。

学习力扣

2021.3.24

456. 132模式

https://leetcode-cn.com/problems/132-pattern/

给你一个整数数组 nums ,数组中共有 n 个整数。132 模式的子序列 由三个整数 nums[i]nums[j]nums[k] 组成,并同时满足:i < j < knums[i] < nums[k] < nums[j]

如果 nums 中存在 132 模式的子序列 ,返回 true ;否则,返回 false

进阶:很容易想到时间复杂度为 O(n^2) 的解决方案,你可以设计一个时间复杂度为 O(n logn)O(n) 的解决方案吗?

学习力扣