題目描述
在乙個二維陣列中(每個一維陣列的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。
思路1:
充分考慮到該二維陣列的特點,每一行是公升序的,每一列也是公升序的。通過target和矩陣右上角的元素進行比較
ps:i和j的範圍需要注意,i < array.size() && j >= 0
**:
class
solution
else
if(target >array[i]
[j])
else
return
true;}
return
false;}
};
題目描述
把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。
輸入乙個非遞減排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。
例如陣列為的乙個旋轉,該陣列的最小值為1。
note:給出的所有元素都大於0,若陣列大小為0,請返回0。
思路:
對題目中旋轉陣列進行分析,可以知道旋轉之後形成的兩部分陣列,都是非降序的(可能含有重複的元素),並且前一部分的元素是大於後一部分的元素的。二分查詢的優勢在於可以一次拋掉一半的元素。
判空處理
二分查詢步驟
class
solution
//三個值都相等的時候,就沒有辦法判斷,只能線性查詢
if(rotatearray[mid]
== rotatearray[l]
&& rotatearray[mid]
== rotatearray[r]
)return result;}if
(rotatearray[mid]
>= rotatearray[l]
)else
}return rotatearray[mid];}
};
題目描述
輸入乙個整數陣列,實現乙個函式來調整該陣列中數字的順序,使得所有的奇數字於陣列的前半部分,所有的偶數字於陣列的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變
思路:
其實還是乙個雙指標的問題,用i和k兩個指標解決問題。還用到了插入排序的思想。
**:
class
solution
array[k++
]= tmp;
//將arry[i]放在它該放的位置}}
}};
題目描述
陣列中有乙個數字出現的次數超過陣列長度的一半,請找出這個數字。例如輸入乙個長度為9的陣列。由於數字2在陣列**現了5次,超過陣列長度的一半,因此輸出2。如果不存在則輸出0。
思路1:
如果乙個數字出現的次數超過一半的話,那麼陣列排序後,這個數字一定會在陣列中間的位置。然後再對這個數的個數進行統計,確保題目的條件。
**1:
class
solution
return
(count >
(numbers.
size()
>>1)
)? mid_number :0;
}};
思路2:
遍歷陣列,times為0,如果兩個數不相等就相當於抵消掉,相等的話++ times,不相等的話–times。
ps:要是符合陣列的特性的話,最後times一定是大於0的
**2:
class
solution
else
if(number == numbers[i]
)else
--times;
}for
(int i =
0;isize()
;++i)
return
(count >
(numbers.
size()
>>1)
)? number :0;
}};
思路3:
hash表
**3:
class
solution);
}else
//numbers[i]一定存在
if(map[numbers[i]
]> half)
}return0;
}};
精簡**1:
class
solution
int count =0;
for(
int num : numbers)
return count > numbers.
size()
/2? mode :0;
}};
排序演算法Day1
include mysort.h include include include include include include include using namespace std 插入排序 時間複雜度 平均哦o n 2 完全有序時o n 空間複雜度o 1 穩定 思想 把待排序列分為有序序列和無...
Day1 冒泡演算法 1
bubble sort 背後的想法非常簡單,我們檢視陣列中相鄰的成對元素,一次檢視一對。如果第乙個元素大於第二個元素,則交換它們的位置,否則將它們繼續移動。def bubble sort our list for i in range len our list 1 if our list i our...
基本演算法學習day1
反轉陣列 leecode242.有效的字母異位詞 方法 建立26位的int陣列,用來存放對應第幾個字母的個數 遍歷 s讓相應的值 遍歷 t讓相應的值 最後如果陣列中有乙個值不為0則返回false 給定兩個字串 s 和 t 編寫乙個函式來判斷 t 是否是 s 的字母異位詞。示例 1 輸入 s anag...