使用二分查找法:前提条件为序列有序,经常在以下两种情况下使用 1.在[1,2,3,4,5,6,7]查找一个目标target数字。相比线性遍历时间复杂度O(n),二分查找时间复杂度为O(logn)。 2.在[0,0,0,1,1,1,1]查找元素1第一次出现的位置。 JAVA /* The isBadV ...
分类:
其他好文 时间:
2020-05-03 20:53:52
阅读次数:
84
统计大串中小串出现的次数(新的解决方案) StringBuffer类 StringBuffer类的概述 我们如果 对字符串进行拼接操作 ,每次拼接,都会构建一个新的String对象,既耗时,又浪费空间。而 StringBuffer 就可以解决这个问题。 线程安全的可变长度的字符序列 StringBu ...
分类:
编程语言 时间:
2020-05-01 20:55:58
阅读次数:
72
题目描述:(这是一个 交互式问题 ) 给你一个 山脉数组 mountainArr,请你返回能够使得 mountainArr.get(index) 等于 target 最小 的下标 index 值。如果不存在这样的下标 index,就请返回 1。 何为山脉数组?如果数组 A 是一个山脉数组的话,那它满 ...
分类:
编程语言 时间:
2020-05-01 13:06:19
阅读次数:
64
二分查找:思路很简单,细节是魔鬼 参考文章: "https://labuladong.gitbook.io/algo/di ling zhang bi du xi lie/er fen cha zhao xiang jie" 练习题: [leetcode 探索二分查找专题][https://leet ...
分类:
其他好文 时间:
2020-04-30 15:49:29
阅读次数:
89
方法:二分查找 def binary_search(mountain, target, l, r, key=lambda x: x): target = key(target) while l <= r: mid = (l + r) // 2 cur = key(mountain.get(mid)) ...
分类:
编程语言 时间:
2020-04-30 09:43:56
阅读次数:
60
在查找数据的时候除了暴力查找外,还可可以使用二分法查找,二分法查找又叫折半查找。二分法在查找的时候效率是比较高的,但是它有 局限性,就是仅适用于顺序表,不管是升序还是降序都适用。原理就是取顺序表的中间那个元素mid,然后用中间的元素mid和待查找元素x进 行比较大小,以此改变下次的查找区间,使得下次 ...
分类:
其他好文 时间:
2020-04-29 21:53:53
阅读次数:
56
二分查找模版 来源:公众号 labuladong 注意: int mid = left + (right - left) / 2; 这么写而不是 int mid = (left + right) >> 1; 是由于left加right可能整数溢出 public class BinarySearch ...
分类:
其他好文 时间:
2020-04-29 14:23:15
阅读次数:
50
题目描述 The only difference between the easy and the hard versions is the maximum value of k. You are given an infinite sequence of form "112123123412345 ...
分类:
其他好文 时间:
2020-04-27 22:17:24
阅读次数:
94
leetcode "33. 搜索旋转排序数组" 刚开始我的思路是先遍历直到发现断层,如果有与target一样的值就直接返回,否则就对断层的地方一直到最后进行二分查找。 但这样的最坏复杂度还是O(n)的,看了答案才知道像这样有只有一个断层的序列也能直接用二分. 而且 "题解" 中有一个代码量非常少的答 ...
分类:
编程语言 时间:
2020-04-27 17:36:18
阅读次数:
50
搜索旋转排序数组 假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。 搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。你可以假设数组中不存在重复的元素。 你的算法时间复 ...
分类:
编程语言 时间:
2020-04-27 13:23:03
阅读次数:
55