題目描述:
給定乙個排序陣列和乙個目標值,在陣列中找到目標值,並返回其索引。如果目標值不存在於陣列中,返回它將會被按順序插入的位置。可假設陣列中無重複元素。
樣例:
輸入:[1,3,5] 3
輸出:1
輸入:[1,4] 3
輸出:1
輸入:[1] 1
輸出:0
題解:
看起來,因為是排好序的,遍歷一遍就可以找出被插入的位置。。可是寫出來發現,遍歷只能解決一般問題,臨界情況都無法處理,所以在迴圈之前加了好多if語句處理邊界和特殊情況。
**:
public
static
intsearchinsert
(int
nums,
int target)
else
if(target > nums[nums.length-1]
)//處理陣列唱長度為1的情況
if(nums.length ==1)
//核心迴圈,存在則返回下標,不存在則返回插入點下標,
//由於迴圈條件的限制,不能處理陣列長度為0和1的情況,而且陣列最後乙個元素也迴圈不到
這種屬於暴力解法,傻瓜操作,一不小心就容易遺漏特殊情況,所以,還得學習下巧妙地解決。我會回來更新的。
4月2號更新:
看了力扣此題下的題解,發現二分法就是那個巧妙的解法,一次迴圈就能涵蓋所有的特殊情況,實在是秒啊。
簡單搜尋題!
設有乙個4 4的棋盤,用四個棋子布到格仔中,要求滿足以下條件 1 任意兩個棋子不在同一行和同一列上 試問有多少種棋局,程式設計把它們全部列印出來。如下 include include include include include using namespace std int n 4,m 4,us...
LeetCode題庫 簡單題
leetcode 題目鏈結 反轉一半 負數不可能是回文 個位數一定是回文 0是回文 問題 如何反轉一半的數字 演算法例項 bool ispalindrome int x if x 10 x為個位數 一定是回文 return1 int revernum 0 while x revernum retur...
LeetCode 簡單題 棧
你現在是棒球比賽記錄員。給定乙個字串列表,每個字串可以是以下四種型別之一 1.整數 一輪的得分 直接表示您在本輪中獲得的積分數。2.一輪的得分 表示本輪獲得的得分是前兩輪有效 回合得分的總和。3.d 一輪的得分 表示本輪獲得的得分是前一輪有效 回合得分的兩倍。4.c 乙個操作,這不是乙個回合的分數 ...