二分查找
二分查找
qxlxi
21届本,后端工程师 (专注于Java、Go、数据库、缓存、消息队列、网络、OS、算法、软件设计、DevOps、云原生、大数据、分布式系统架构设计等)
展开
-
【每日一题-leetcode】287. 寻找重复数
287. 寻找重复数寻找重复数难度中等790给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之间(包括 1 和n),可知至少存在一个重复的整数。假设只有一个重复的整数,找出这个重复的数。示例 1:输入: [1,3,4,2,2]输出: 2示例 2:输入: [3,1,3,4,2]输出: 3快慢指针// 快慢指针 如果数组中有重复的数字,那么必定会形成环// 时间复杂度为O(N)public int findDuplicate(int[] nums原创 2020-07-31 18:47:22 · 399 阅读 · 0 评论 -
【每日一题-leetcode】162. 寻找峰值
162. 寻找峰值寻找峰值难度中等243峰值元素是指其值大于左右相邻值的元素。给定一个输入数组 nums,其中 nums[i] ≠ nums[i+1],找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回任何一个峰值所在位置即可。你可以假设 nums[-1] = nums[n] = -∞。示例 1:输入: nums = [1,2,3,1]输出: 2解释: 3 是峰值元素,你的函数应该返回其索引 2。// 首先我们来分析一下,如果采用线性遍历的话,时间复杂度为O(原创 2020-07-12 11:17:56 · 401 阅读 · 0 评论 -
【每日一题-leetcode】 153.寻找旋转排序数组中的最小值
153.寻找旋转排序数组中的最小值寻找旋转排序数组中的最小值难度中等180假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。请找出其中最小的元素。你可以假设数组中不存在重复元素。示例 1:输入: [3,4,5,1,2]输出: 1示例 2:输入: [4,5,6,7,0,1,2]输出: 0//二分 time :O(logN) space : O(1)public int fi原创 2020-05-13 10:58:55 · 335 阅读 · 0 评论 -
【每日一题-leetcode】74.搜索二维矩阵
74.搜索二维矩阵搜索二维矩阵难度中等编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性:每行中的整数从左到右按升序排列。每行的第一个整数大于前一行的最后一个整数。示例 1:输入:matrix = [ [1, 3, 5, 7], [10, 11, 16, 20], [23, 30, 34, 50]]target = 3输出: true二分public boolean searchMatrix(int[][] ma原创 2020-05-13 10:31:27 · 384 阅读 · 0 评论 -
【每日一题-leetcode】367.有效的完全平方数
367.有效的完全平方数有效的完全平方数难度简单119给定一个正整数 num,编写一个函数,如果 num 是一个完全平方数,则返回 True,否则返回 False。说明:不要使用任何内置的库函数,如 sqrt。示例 1:输入:16输出:True示例 2:输入:14输出:False二分 //直接二分秒就行 注意num要是一个很大的数 尽量使用Long // time : O(logN) space : O(1) public boolean is原创 2020-05-11 18:28:41 · 338 阅读 · 0 评论 -
【每日一题-leetcode】33.搜索旋转排序数组
33.搜索旋转排序数组搜索旋转排序数组难度中等718假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。你可以假设数组中不存在重复的元素。你的算法时间复杂度必须是 O(log n) 级别。示例 1:输入: nums = [4,5,6,7,0,1,2], target = 0输出: 4示例 2:输入:原创 2020-05-10 15:04:56 · 369 阅读 · 0 评论 -
【每日一题-leetcode】69. x 的平方根
69. x 的平方根难度简单390实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 *x *是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例 1:输入: 4输出: 2二分查找//二分法public int mySqrt(int x) { if(x == 0 || x == 1){ return x; } int left = 1; int right = x; while(原创 2020-05-10 11:36:09 · 338 阅读 · 0 评论 -
【剑指offer】57.和为s的两个数字
57.和为s的两个数字面试题57. 和为s的两个数字难度简单18输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,则输出任意一对即可。示例 1:输入:nums = [2,7,11,15], target = 9输出:[2,7] 或者 [7,2]示例 2:输入:nums = [10,26,30,31,47,60], targe...原创 2020-05-08 10:40:40 · 224 阅读 · 0 评论 -
【剑指offer】53 - II. 0~n-1中缺失的数字
53 - II. 0~n-1中缺失的数字面试题53 - II. 0~n-1中缺失的数字难度简单16一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。示例 1:输入: [0,1,3]输出: 2示例 2:输入: [0,1,2,3,4,5,6,7,9]输出: 8...原创 2020-04-30 14:06:50 · 348 阅读 · 0 评论 -
【剑指offer】53.在排序数组中查找数字 I
53.在排序数组中查找数字 I面试题53 - I. 在排序数组中查找数字 I难度简单23统计一个数字在排序数组中出现的次数。示例 1:输入: nums = [5,7,7,8,8,10], target = 8输出: 2示例 2:输入: nums = [5,7,7,8,8,10], target = 6输出: 01.二分查找//search问题 先O(n)>二分...原创 2020-04-30 13:49:50 · 359 阅读 · 1 评论 -
【剑指offer】11. 旋转数组的最小数字
11. 旋转数组的最小数字难度简单35把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组[3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1。示例 1:输入:[3,4,5,1,2]输出:1示例 2:输入:[2,2,2,0,1]输出:0th:这道题主要的关键点...原创 2020-04-01 10:57:02 · 214 阅读 · 0 评论