From 4eb5e0fc95cc107989b77434c19dd51ca28fbb9e Mon Sep 17 00:00:00 2001 From: YDZ Date: Fri, 8 Nov 2019 23:16:07 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20problem=20704?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../0704. Binary Search/704. Binary Search.go | 16 +++++++ .../704. Binary Search_test.go | 48 +++++++++++++++++++ Algorithms/0704. Binary Search/README.md | 43 +++++++++++++++++ 3 files changed, 107 insertions(+) create mode 100644 Algorithms/0704. Binary Search/704. Binary Search.go create mode 100644 Algorithms/0704. Binary Search/704. Binary Search_test.go create mode 100755 Algorithms/0704. Binary Search/README.md diff --git a/Algorithms/0704. Binary Search/704. Binary Search.go b/Algorithms/0704. Binary Search/704. Binary Search.go new file mode 100644 index 00000000..59ee8d79 --- /dev/null +++ b/Algorithms/0704. Binary Search/704. Binary Search.go @@ -0,0 +1,16 @@ +package leetcode + +func search704(nums []int, target int) int { + low, high := 0, len(nums)-1 + for low <= high { + mid := low + (high-low)>>1 + if nums[mid] == target { + return mid + } else if nums[mid] > target { + high = mid - 1 + } else { + low = mid + 1 + } + } + return -1 +} diff --git a/Algorithms/0704. Binary Search/704. Binary Search_test.go b/Algorithms/0704. Binary Search/704. Binary Search_test.go new file mode 100644 index 00000000..85c06368 --- /dev/null +++ b/Algorithms/0704. Binary Search/704. Binary Search_test.go @@ -0,0 +1,48 @@ +package leetcode + +import ( + "fmt" + "testing" +) + +type question704 struct { + para704 + ans704 +} + +// para 是参数 +// one 代表第一个参数 +type para704 struct { + nums []int + target int +} + +// ans 是答案 +// one 代表第一个答案 +type ans704 struct { + one int +} + +func Test_Problem704(t *testing.T) { + + qs := []question704{ + + question704{ + para704{[]int{-1, 0, 3, 5, 9, 12}, 9}, + ans704{4}, + }, + + question704{ + para704{[]int{-1, 0, 3, 5, 9, 12}, 2}, + ans704{-1}, + }, + } + + fmt.Printf("------------------------Leetcode Problem 704------------------------\n") + + for _, q := range qs { + _, p := q.ans704, q.para704 + fmt.Printf("【input】:%v 【output】:%v\n", p, search704(p.nums, p.target)) + } + fmt.Printf("\n\n\n") +} diff --git a/Algorithms/0704. Binary Search/README.md b/Algorithms/0704. Binary Search/README.md new file mode 100755 index 00000000..fd2c1b25 --- /dev/null +++ b/Algorithms/0704. Binary Search/README.md @@ -0,0 +1,43 @@ +# [704. Binary Search](https://leetcode.com/problems/binary-search/) + + +## 题目: + +Given a **sorted** (in ascending order) integer array `nums` of `n` elements and a `target` value, write a function to search `target` in `nums`. If `target` exists, then return its index, otherwise return `-1`. + +**Example 1:** + + Input: nums = [-1,0,3,5,9,12], target = 9 + Output: 4 + Explanation: 9 exists in nums and its index is 4 + +**Example 2:** + + Input: nums = [-1,0,3,5,9,12], target = 2 + Output: -1 + Explanation: 2 does not exist in nums so return -1 + +**Note:** + +1. You may assume that all elements in `nums` are unique. +2. `n` will be in the range `[1, 10000]`. +3. The value of each element in `nums` will be in the range `[-9999, 9999]`. + + +## 题目大意 + + +给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target  ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。 + +提示: + +- 你可以假设 nums 中的所有元素是不重复的。 +- n 将在 [1, 10000]之间。 +- nums 的每个元素都将在 [-9999, 9999]之间。 + + +## 解题思路 + + +- 给出一个数组,要求在数组中搜索等于 target 的元素的下标。如果找到就输出下标,如果找不到输出 -1 。 +- 简单题,二分搜索的裸题。