35. Search Insert Position
선택한 UI 언어에 맞게 문제 텍스트를 러시아어에서 번역합니다. 코드는 변경하지 않습니다.
Дан sorted 배열 уникальных целых чисел и целевое значение. return индекс, если цель найдена. Если нет, return индекс, где она должна быть вставлена в соответствии с порядком.
C# 해법
매칭됨/원본public class Solution {
public int SearchInsert(int[] nums, int target) {
int pivot, left = 0, right = nums.Length - 1;
while (left <= right) {
pivot = left + (right - left) / 2;
if (nums[pivot] == target)
return pivot;
if (target < nums[pivot])
right = pivot - 1;
else
left = pivot + 1;
}
return left;
}
}
C++ 해법
자동 초안, 제출 전 검토#include <bits/stdc++.h>
using namespace std;
// Auto-generated C++ draft from the C# solution. Review containers, LINQ and helper types before submit.
class Solution {
public:
public int SearchInsert(vector<int>& nums, int target) {
int pivot, left = 0, right = nums.size() - 1;
while (left <= right) {
pivot = left + (right - left) / 2;
if (nums[pivot] == target)
return pivot;
if (target < nums[pivot])
right = pivot - 1;
else
left = pivot + 1;
}
return left;
}
}
Java 해법
매칭됨/원본class Solution {
public int searchInsert(int[] nums, int target) {
int pivot, left = 0, right = nums.length - 1;
while (left <= right) {
pivot = left + (right - left) / 2;
if (nums[pivot] == target) return pivot;
if (target < nums[pivot]) right = pivot - 1;
else left = pivot + 1;
}
return left;
}
}
JavaScript 해법
매칭됨/원본/** * @param {number[]} nums
* @param {number} target * @return {number}
*/var searchInsert = function(nums, target) {
if (nums.indexOf(target) === -1) { for (let i = 0; i <= nums.length; ) {
if (nums[i] < target) { i++;
} else { return i
} }
} else { return nums.indexOf(target);
}};
Python 해법
매칭됨/원본class Solution:
def searchInsert(self, nums, target):
left = 0
right = len(nums) - 1
while left <= right:
pivot = left + (right - left) // 2
if nums[pivot] == target:
return pivot
if target < nums[pivot]:
right = pivot - 1
else:
left = pivot + 1
return left
Go 해법
매칭됨/원본func searchInsert(nums []int, target int) int {
var pivot, left, right int = 0, 0, len(nums) - 1
for left <= right {
pivot = left + (right-left)/2
if nums[pivot] == target {
return pivot
} else if target < nums[pivot] {
right = pivot - 1
} else {
left = pivot + 1
}
}
return left
}
Algorithm
예제:
Input: nums = [1,3,5,6], target = 5
Output: 2
👨💻
알고리즘:
1️⃣
Инициализируйте указатели left и right: left = 0, right = n - 1.
2️⃣
Пока left <= right:
Сравните средний element 배열а nums[pivot] с целевым значением target.
Если средний element является целевым, то есть target == nums[pivot]: return pivot.
Если цель не найдена:
Если target < nums[pivot], продолжайте поиск в левом под배열е. right = pivot - 1.
Иначе продолжайте поиск в правом под배열е. left = pivot + 1.
3️⃣
return left.
😎
Vacancies for this task
활성 채용 with overlapping task tags are 표시됨.
아직 활성 채용이 없습니다.