LeetCode035 Search Insert Position

来源:互联网 发布:建筑工地用工人员软件 编辑:程序博客网 时间:2024/05/19 13:23

详细见:leetcode.com/problems/search-insert-position


Java Solution: github

package leetcode;public class P035_SearchInsertPosition {public static void main(String[] args) {System.out.println(new Solution().searchInsert(new int[] {1,3,5,6}, 69));}/* * 0 ms * 16.95% * 又是试错型AC,今天怎么了 */static class Solution {    public int searchInsert(int[] nums, int target) {        if (nums == null || nums.length == 0)        return 0;        if (target > nums[nums.length - 1])        return nums.length;        return getIndex(nums, 0, nums.length - 1, target);    }    private int getIndex(int[] nums, int sti, int eni, int target) {    while (sti < eni) {    int mid = (sti + eni) >> 1;//    mid = (mid & 0x1) == 1 ? (mid >> 1) + 1 : mid >> 1;    if (nums[mid] > target)    eni = mid;    else if (nums[mid] < target)    sti = mid + 1;    else    return mid;    }    return sti;    }}}


C Solution: github

/*    url: leetcode.com/problems/search-insert-position/    3ms 23.90%*/int searchInsert(int* nums, int numsSize, int target) {    //first equal or larger    int i = 0, j = numsSize - 1, m = 0;    if (numsSize == 0) return 0;    if (nums[i] >= target) return i;    if (nums[j] < target) return j + 1;    while (i < j) {        m = i + (j - i) / 2;        if (nums[m] >= target) {            j = m;        } else {            i = m + 1;        }    }    return i;}int main() {    int nums[] = {1,3,5,6};    int v[] = {5, 2, 7, 0};    int i = 0;    int numsSize = 4;    for (i = 0; i < numsSize; i ++) {        printf("target is %d answer is %d \r\n", v[i], searchInsert(nums, numsSize, v[i]));            }}


Python Solution: github

#coding=utf-8'''    url: leetcode.com/problems/search-insert-position/    @author:     zxwtry    @email:      zxwtry@qq.com    @date:       2017年4月4日    @details:    Solution: 58ms 21.67%'''class Solution(object):    def searchInsert(self, n, t):        """        :type n: List[int]        :type t: int        :rtype: int        """        nn = 0 if n == None else len(n)        if nn == 0: return 0        return self.binarySearchFirstEqualOrLarger(n, 0, nn, t)    #[i, j)    def binarySearchFirstEqualOrLarger(self, n, i, j, t):        j -= 1        if n[j] < t: return j + 1        while i < j:            m = (i + j) // 2            if n[m] >= t:                j = m            else:                i = m + 1        return i



0 0
原创粉丝点击