算法分析与设计week11--744. Find Smallest Letter Greater Than Target
2018-01-12 11:27
435 查看
744. Find Smallest Letter Greater Than Target
Description
Given a list of sorted characters letters containing only lowercase letters, and given a target letter target, find the smallest element in the list that is larger than the given target.Letters also wrap around. For example, if the target is target = ‘z’ and letters = [‘a’, ‘b’], the answer is ‘a’.
Example
Input:letters = [“c”, “f”, “j”]
target = “a”
Output: “c”
Input:
letters = [“c”, “f”, “j”]
target = “c”
Output: “f”
Input:
letters = [“c”, “f”, “j”]
target = “d”
Output: “f”
Input:
letters = [“c”, “f”, “j”]
target = “g”
Output: “j”
Input:
letters = [“c”, “f”, “j”]
target = “j”
Output: “c”
Input:
letters = [“c”, “f”, “j”]
target = “k”
Output: “c”
Note:
letters has a length in range [2, 10000].
letters consists of lowercase letters, and contains at least 2 unique letters.
target is a lowercase letter.
Analysis
解法1:暴力求解class Solution { public: char nextGreatestLetter(vector<char>& letters, char target) { for (int i = 0; i < letters.size(); i++) { if (letters[i] > target) { return letters[i]; } } return letters[0]; } };
解法2:二分搜索
class Solution { public: char nextGreatestLetter(vector<char>& letters, char target) { if (target < letters[0] || letters[letters.size() - 1] <= target) return letters[0]; int left = 0, right = letters.size() - 1, mid; while(left < right) { mid = (left + right) >> 1; if(target < letters[mid]) { right = mid; } else if (letters[mid] <= target) { left = mid + 1; } } if (letters[mid] <= target) { return letters[mid + 1]; } else if (letters[mid - 1] > target) { return letters[mid - 1]; } else { return letters[mid]; } } };
相关文章推荐
- 算法分析与设计week16--121. Best Time to Buy and Sell Stock
- 算法分析与设计week17--698. Partition to K Equal Sum Subsets
- 算法分析与设计丨第七周丨LeetCode(11)——Candy(Hard)
- 算法分析与设计week09--53. Maximum Subarray
- 算法分析与设计课程(11):【leetcode】Gray Code
- 算法分析与设计week19--257. Binary Tree Paths
- 算法分析与设计-11-最长递增子序列的动态规划算法
- 算法分析与设计week01——1.Two Sum
- 算法分析与设计week04--55.Jump Game
- 算法分析与设计week10--349. Intersection of Two Arrays
- 算法分析与设计week12--416. Partition Equal Subset Sum
- 算法分析与设计week03--122.Best Time to Buy and Sell Stock II
- 算法分析与设计week04--45.Jump Game II
- 算法分析与设计week15--198. House Robber
- Week 6算法分析作业
- 动态规划(算法分析与设计)
- [算法分析与设计] 每周一题: "算法概论" Exercise 8.3
- 算法分析与设计——课本8.14
- 进销存设计与分析_收款单(11)
- !金尚网上商城10~11-业务逻辑分析+逻辑(编码)设计