// 语言:C // 执行用时:8ms // 内存消耗:7.2MB int searchInsert(int* nums, int numsSize, int target){ int i; for (i = 0; i < numsSize; i++) { if (nums[i] >= target) return i; } return i; }
// 语言:Java // 执行用时:0ms(具体原因未知,可能是因为提交的时候网络卡顿) // 内存消耗:39.2MB class Solution { public int searchInsert(int[] nums, int target) { int l = 0; int r = nums.length - 1; while (l <= r) { int m = (l + r) / 2; if (nums[m] == target) { return m; } else if (nums[m] > target) { r = m - 1; } else { l = m + 1; } } return l; } }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
// 语言:C // 执行用时:8ms // 内存消耗:7.1MB int searchInsert(int* nums, int numsSize, int target){ int l, r; l = 0; r = numsSize - 1; while (l <= r) { int m = (l + r) / 2; if (nums[m] == target) return m; else if (nums[m] > target) r = m - 1; else l = m + 1; } return l; }
当然,我们还可以使用Python无脑解决这个问题:
1 2 3 4 5 6 7 8 9 10 11 12 13
""" 语言:Python3 执行用时:44ms 内存消耗:13.5MB """ class Solution: def searchInsert(self, nums: List[int], target: int) -> int: if target in nums: return nums.index(target) else: nums.append(target) nums = sorted(nums) return nums.index(target)
在逛LeetCode评论区的时候,还看到了一位大神李达西的Python“一行流”解法:
1 2 3 4 5 6 7 8
""" 语言:Python3 执行用时:据该用户的说法是50ms 内存消耗:未知 """ class Solution: def searchInsert(self, nums: List[int], target: int) -> int: return len([i for i in nums if i < target])