#LeetCode:35. Search Insert Position

灆洢 2019-04-01 09:01:28

此題要找目標的數字若要插進已排好的數字陣列中,應該要排在哪個位置上。

利用二分搜尋找尋是否 target 是否存在,不存在就找到大於它的第一個值即可。

Kotlin(168ms)

/*******************************************************/
/* LeetCode 35. Search Insert Position                 */
/* Author: Maplewing [at] knightzone.studio            */
/* Version: 2020/06/11                                 */
/*******************************************************/
class Solution {
    fun searchInsert(nums: IntArray, target: Int): Int {
        if (nums.isEmpty()) return 0

        var left = 0
        var right = nums.size
        while (left < right) {
            val mid = left + (right - left) / 2
            val value = nums[mid]
            when {
                value == target -> return mid
                value < target -> left = mid + 1
                value > target -> right = mid
            }
        }

        return right
    }
}

C++(8ms)

/*******************************************************/
/* LeetCode 35. Search Insert Position                 */
/* Author: Maplewing [at] knightzone.studio            */
/* Version: 2019/04/01                                 */
/*******************************************************/
#include <vector>
#include <algorithm>
using namespace std;

class Solution {
public:
  int searchInsert(vector<int>& nums, int target) {
    return lower_bound(nums.begin(), nums.end(), target) - nums.begin();
  }
};

在〈“#LeetCode:35. Search Insert Position”〉中有 1 則留言

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料