二分二段性/滑動(dòng)窗口/二叉樹
154 尋找旋轉(zhuǎn)排序數(shù)組中的最小值 II
二分本質(zhì)上是二段性,而有重復(fù)元素的情況下,二段性就被破壞了,要恢復(fù)二段性;
因此,可以去掉,頭和尾中【相同】的元素,來達(dá)到去除不滿足的情況;
class Solution {
? ? public int findMin(int[] nums) {
? ? ? ? int n = nums.length;
? ? ? ? int l = 0, r = n - 1;
? ? ? ? while (l < r && nums[0] == nums[r]) r--;? // 恢復(fù)二段性
? ? ? ? while (l < r) {
? ? ? ? ? ? int mid = l + r + 1 >> 1;
? ? ? ? ? ? if (nums[mid] >= nums[0]) {
? ? ? ? ? ? ? ? l = mid;//? 這樣寫保證了找到的是最右邊的數(shù)
? ? ? ? ? ? } else {
? ? ? ? ? ? ? ? r = mid - 1;
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? return r + 1 < n ? nums[r + 1] : nums[0];?
? ? ? ? // 如果r+1 > n ,說明沒找到,原數(shù)組就是自然排列的,因此,第一個(gè)數(shù)就是最小的
? ? }
}
1438 絕對差不超過限制的最長連續(xù)子數(shù)組
雙指針
滑動(dòng)窗口+雙指針
三葉題解分析:https://leetcode.cn/problems/longest-continuous-subarray-with-absolute-diff-less-than-or-equal-to-limit/solution/xiang-jie-er-fen-hua-dong-chuang-kou-dan-41g1/
二叉樹對稱問題
二叉樹的鏡像
https://leetcode.cn/problems/er-cha-shu-de-jing-xiang-lcof/
不能在原來節(jié)點(diǎn)的基礎(chǔ)上直接進(jìn)行交換,要重新建立新的節(jié)點(diǎn);而建立新的節(jié)點(diǎn),不能前序進(jìn)行建立,因?yàn)榍靶虿⒉恢乐蠊?jié)點(diǎn)的情況,而翻轉(zhuǎn)的創(chuàng)建的時(shí)候,應(yīng)要包含子樹;否則,子樹并沒有跟著根節(jié)點(diǎn)一起翻轉(zhuǎn);
對稱的二叉樹
題解
