方法一:排序,去重,二分查找。 注意事项:去重并不是把数组中的元素删去,而是重复的部分元素在数组末尾。 方法二:记录,排序,枚举放回。 注意事项:相同的数排名不同,存在局限性。 ...
分类:
其他好文 时间:
2019-10-05 10:19:45
阅读次数:
89
顺序查找 设置哨兵,防止访问越界 折半查找 ...
分类:
其他好文 时间:
2019-10-04 16:54:57
阅读次数:
89
以后题解还是单独放吧。 A.Divisors 根号筛求所有数的因子,扫一遍去重统计即可。 B.Market 离线询问。把询问和商店都按时间排序,维护一个指针把所有能被当前计划购买的商品都放进来跑一次背包。 注意到话费很大而价值很小,那么把价值作为dp数组下标,后缀取min保证单调后二分查找最优解即可 ...
分类:
其他好文 时间:
2019-10-04 16:36:14
阅读次数:
90
题意:找出“BST”中不符合规律的两个结点。 解题思路: 在这里,我采用的是非递归中序遍历,使用pre记录前驱,tmp记录当前结点。 其实,这个题就是在建立中序线索二叉树。 https://www.cnblogs.com/yy-1046741080/p/11511263.html 对于中序遍历,弹栈 ...
分类:
其他好文 时间:
2019-10-04 15:13:24
阅读次数:
75
题目: 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 你可以假设数组中无重复元素。 示例 1: 输入: [1,3,5,6], 5输出: 2示例 2: 输入: [1,3,5,6], 2输出: 1示例 3: 输入: [1,3,5 ...
分类:
其他好文 时间:
2019-10-03 22:06:33
阅读次数:
79
1. 2. binary search (sorted array) 给定查找对象,array,以及最大最小的范围;将查找对象与middle作比较,进而改变最大最小的范围,然后调用递归 时间复杂度的计算要考虑最坏的情况,本题中最坏的情况类比一条面包每天吃一半几天吃完的问题,时间复杂度为log以2为底 ...
分类:
其他好文 时间:
2019-10-03 18:27:11
阅读次数:
75
a1=[1,3,4,8,12] def search(a,x): l,r=0,len(a) while l<r: mid=(l+r)//2 if a[mid]==x: return "找到了,位于第%d位置 " % (mid+1) elif a[mid]<x: l=mid+1 ... ...
分类:
其他好文 时间:
2019-10-03 18:26:32
阅读次数:
66
二分答案 基本模板 在一个有序数组中二分查找一个值 k 例题分析 POJ1064 假定一个解并判断是否可行 题目:有 N 条绳子,长度分别为L。如果从他们中切割出 K 条长度相同的绳子的话,这 K 条绳子每条最长能有多长。答案保留到小数点后两位 解:C(x) = 可以得到 k 条长度为 x 的绳子 ...
分类:
其他好文 时间:
2019-10-03 12:34:21
阅读次数:
70
练习题。。。。。。。。 1 一、二分查找法算法 2 l = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88] 3 def find(l,aim,start=0,end=len(l) 1): 4 mid ...
分类:
其他好文 时间:
2019-10-03 10:54:12
阅读次数:
77
题意:给出头结点,让你判断这颗树是不是二叉搜索树。 思路: 很显然,对于一棵二叉搜索树,其左右子树肯定也是二叉搜索树; 因此,递归思路:如果左右子树都是BST,并且该根结点也符合规律(小于左子树的最小结点,小于右子树的最大结点) 递归边界:如果是空节点,那么返回true; 我在实现的时候偷了一点懒; ...
分类:
其他好文 时间:
2019-10-02 21:05:09
阅读次数:
131