。Leetcodeノート--35検索挿入位置 - CrowFea

問題の0.5概要

ソートされた配列とターゲットを考えると、配列内のオブジェクトを検索し、そのインデックスを返します。標的がアレイに存在しない場合、それが配列に挿入された位置に戻されます。

あなたは、アレイ内のことは、重複要素をとることができます。

例1:

1 
2
入力:[1,3,5,6]、5 
出力:2

例2:

1 
2
入力:[1,3,5,6]、2 
出力:1

例3:

1 
2
入力:[1,3,5,6]、7 
出力:4

例4:

1 
2
入力:[1,3,5,6]、0 
出力:0

1.分析

データ検索時の暴力leetcodeが二分法よりも短くなっている理由は、典型的なバイナリ検索は、しかし分かりません。

しかし、最初に私はそれがちょっとも醜いそれを書きました!

シンプルなコードのみJiangong李ああ。

2.コード

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
30
31
32
33
34
35
36
37
38
39
40
41
クラスのソリューション{ 
パブリック:
int型searchInsert(ベクトル<整数>&NUMS、int型のターゲット){
int型I、ミッド;
INT低= 0、ハイ= nums.size() - 1; IF(ターゲット> NUMS [高]){ リターンハイ+ 1。 } (目標<NUMS [低])であれば{ 0を返します。 } IF(ターゲット== NUMS [低]){ 戻り低いです。 } < 大专栏。leetcode笔记--35搜索插入位置- CrowFea BR /> 一方(高-低> 1){ IF(ターゲット== NUMS [低]){ 戻り低いです。 } IF(ターゲット== NUMS [高]){ 戻り高いです。 }









 






半ば=(ハイロー+)/ 2。
IF(NUMS [中間] ==ターゲット){
戻りミッド。
}
そうであれば(NUMS [中間] <ターゲット){
低い=ミッド。
}
他{
高=ミッド。
}
}
もし(NUMS [中間] <ターゲット){
戻り中間+ 1。
}
他{
戻りミッド。
}
}
}。

あまりにも!醜いです!アップ!

裁判官より確実に速いが、醜いものの。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Solution {
public:
int searchInsert(vector<int>& nums, int target) {
int i,mid;
int low=0,high=nums.size()-1;

while (low <= high ){
mid = (low + high )/2;
if (nums[mid] < target)
low = mid + 1;
else if ( nums[mid] > target)
high = mid - 1;
else
return mid;
}
if(nums[mid]<target){
return mid+1;
}
return mid;
}
};

几个要点:

  • low<=high
  • low=mid+1
  • high=mid-1
  • return mid




おすすめ

転載: www.cnblogs.com/lijianming180/p/12037925.html