35. Search Insert Position

LeetCode easy original: C# #array #csharp #easy #leetcode #search #sort #two-pointers
선택한 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 표시됨.

전체 채용
아직 활성 채용이 없습니다.