问题描述 给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。 你的算法时间复杂度必须是 O(log n) 级别。 如果数组中不存在目标值,返回 [-1, -1]。 示例 1: 输入: nums = [5,7,7,8,8,10], tar ...
分类:
编程语言 时间:
2020-09-17 21:50:55
阅读次数:
30
topic:ThreeSum 目标:用于统计一个数组中和为 0 的三元组数量,每个三元组都不重复 方法 方法一:最简单方法 方法二:先排序,对两元素求和,再用二分查找寻找相反数 方法三:先排序,再用左右两指针查找一个数的相反数 方法一:最简单方法 public class ThreeSumSlow ...
分类:
编程语言 时间:
2020-09-17 18:58:54
阅读次数:
29
?分查找. 每次能够排除掉一半的数据. 查找的效率非常高. 但是局限性比较大. 必须是有序列才可以使用二分查找 要求: 查找的序列必须是有序序列. 三种方法: 1.纯算法 lst = [11, 22, 33, 44, 55, 66, 77, 88, 99, 123, 234, 345, 456, 5 ...
分类:
编程语言 时间:
2020-09-17 18:43:41
阅读次数:
31
直接插入排序,折半插入排序,冒泡排序,快速排序,简单选择排序,归并排序 ...
分类:
编程语言 时间:
2020-09-16 12:15:10
阅读次数:
39
今天在写二分查找,计算中间值的时候是这样写的: long mid = left + (right - left) >> 1; 然后提交一直都是超时,脑改了很多地方都不行,只能debug,发现循环死在left=16,right=30时,由于循环一直是进入left=mid+1中,然而mid根本没有变,所 ...
分类:
其他好文 时间:
2020-09-09 19:21:19
阅读次数:
59
<?php /** * @param array $arr 递增数字数组 * @param int $number 待查找的数字 * @return int 返回找到的键 */ function binary_search($arr,$number){ // 非数组或数组为空,返回-1 if(!is ...
分类:
其他好文 时间:
2020-08-20 19:22:52
阅读次数:
94
排序 选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法,而冒泡排序、插入排序、归并排序和基数排序是稳定的排序算法 (稳定的排序是指排序前后相同的两个数的相对位置是一致的) 一.冒泡排序 1.算法描述 比较相邻元素,如果第一个比第二个大,交换位置,这样每经过一趟就冒出一个最大的 2.代码实现 p ...
分类:
编程语言 时间:
2020-08-19 19:14:17
阅读次数:
66
问题: 二分查找,给定一个已排序的数组,和一个目标值target 在该数组中找到target的index返回,若没找到,则返回-1。 Example 1: Input: nums = [-1,0,3,5,9,12], target = 9 Output: 4 Explanation: 9 exist ...
分类:
其他好文 时间:
2020-08-12 15:53:00
阅读次数:
60
一、 public class BinarySeachTest { public static void main(String[] args) { int[] arr = new int[]{22,54,88,97,105,112}; System.out.println(binarySeach( ...
分类:
编程语言 时间:
2020-08-11 00:26:19
阅读次数:
77
一、基本概念 在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个技巧是很多高效算法的基础,如排序算法(快速排序,归并排序),傅 ...
分类:
编程语言 时间:
2020-08-09 21:34:51
阅读次数:
86