亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

golang刷leetcode技巧之如何實現排序變形

發布時間:2021-12-16 09:14:36 來源:億速云 閱讀:182 作者:小新 欄目:大數據

小編給大家分享一下golang刷leetcode技巧之如何實現排序變形,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

尋找旋轉排序數組中的最小值

假設按照升序排序的數組在預先未知的某個點上進行了旋轉。

( 例如,數組 [0,1,2,4,5,6,7] 可能變為 [4,5,6,7,0,1,2] )。

請找出其中最小的元素。

你可以假設數組中不存在重復元素。

示例 1:

輸入: [3,4,5,1,2]

輸出: 1

示例 2:

輸入: [4,5,6,7,0,1,2]

輸出: 0

解題思路:

1,因為兩部分仍然有序所以可以二分查找

2,如果arr[mid]<arr[r]著在左部分查找,否則在右部分

func findMin(nums []int) int {  return find(nums,0,len(nums)-1)}
func find(nums[]int ,l,r int)int{    mid:=(l+r)/2    if mid==l ||mid==r{        if nums[l]<nums[r]{            return nums[l]        }        return nums[r]    }    if nums[mid]<nums[r]{        return find(nums,l,mid)    }    return find(nums,mid,r)}
部分排序

給定一個整數數組,編寫一個函數,找出索引m和n,只要將索引區間[m,n]的元素排好序,整個數組就是有序的。注意:n-m盡量最小,也就是說,找出符合條件的最短序列。函數返回值為[m,n],若不存在這樣的m和n(例如整個數組是有序的),請返回[-1,-1]。

示例:

輸入:[1,2,4,7,10,11,7,12,6,7,16,18,19]

輸出:[3,9]

提示:

0 <= len(array) <= 1000000

解題思路:

1,將數組劃分成三部分,左邊的最大值一定小于中間和右邊部分

從左往右遍歷,依次取最大值,最后一個比最大值小的位置,是中間部分的右邊界(因為右邊部分,比中間和左邊大)

2,右邊最小值比中間和左邊部分大,從最右往左遍歷,取最小值,最后一個比最小值大的位置就是左邊界

3,看左邊界是不是比右邊界小

代碼實現:

func subSort(array []int) []int {  le:=len(array)-1  if le<1{      return []int{-1,-1}  }  min:=1000000  max:=-1000000  l:=le  r:=0
 /**1,2,4, || 7,10,11,7,12,6,7, || 16,18,19左邊               中間                  右邊最后是三個部分,左邊的最大值必須小于其右邊(中間和右邊)的最小值,右邊的最小值必須大于其左邊(左邊和中間)的最大值;那么從左往右找的是最大值,如果出現小于左邊最大值的情況,那么更新 rightindex,最后的 rightindex 右邊的必然大于這個最大值;從右往左找的是最小值,如果出現大于這個值的情況,那么更新 leftindex,最后的 leftindex 左邊的必然小于這個最小值;  */  for i:=0;i<=le;i++{      if array[i]>=max{          max=array[i]      }else{          r=i      }
     if array[le-i]<=min{          min=array[le-i]      }else{          l=le-i      }  }  if l<r{    return []int{l,r}  }  return []int{-1,-1}}

以上是“golang刷leetcode技巧之如何實現排序變形”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

永吉县| 墨竹工卡县| 黔南| 施秉县| 朔州市| 庐江县| 岳阳市| 沅江市| 平顺县| 林周县| 崇明县| 丹寨县| 土默特左旗| 黎城县| 五指山市| 东兰县| 奇台县| 宿迁市| 柳江县| 榆中县| 承德县| 徐州市| 盘山县| 平原县| 康保县| 沧源| 南充市| 永川市| 武陟县| 盐山县| 琼海市| 牙克石市| 高陵县| 莒南县| 石景山区| 琼结县| 通州市| 宁城县| 竹山县| 富民县| 巴林右旗|