搜索
之前在写抽样问题——《编程珠玑》读书笔记这篇文章的时候提到将一个数列进行重新排列,目的是弄乱原有数据的排列,相当于洗牌,这篇文章主要讲讲这个洗牌程序的实现。一、Fisher–YatesShuffle最
2022-11-01
洗牌,现理解就是讲一个数组打算顺序。我想了两种方法。第二种的思路是:如果数组长度为五,则在第一个到第四个随机一个数,与之交换。这样第五的元素就是装了一个随机数,然后再在第一个到第三个随机一个数,与数组
2022-11-01
[844BackspaceStringCompare](https://leetcodecn/problems/backspacestringcompare/)栈此题一看就有一股浓浓的栈味儿,毕竟匹配
2022-10-17
[76MinimumWindowSubstring](https://leetcodecn/problems/minimumwindowsubstring/)滑动窗口此题需要求s中包含t的最小字符串,
2022-10-17
[34FindFirstandLastPositionofElementinSortedArray](https://leetcodecn/problems/findfirstandlastposit
2022-10-14
[59SpiralMatrixII][(https://leetcodecn/problems/spiralmatrixii/)螺旋矩阵其实此题并没有设计什么灵活的算法,只是对模拟的要求高。本题需要考
2022-10-13
[35SearchInsertPosition](https://leetcodecn/problems/searchinsertposition/)此题是从一个升序数组且数组内元素不重复查找目标值,
2022-10-13
[977SquaresofaSortedArray][(https://leetcodecn/problems/squaresofasortedarray/)暴力解法对数组中每个元素平方后再排序代码如
2022-10-12
[209MinimumSizeSubarraySum][(https://leetcodecn/problems/minimumsizesubarraysum/)暴力解法两个for循环,不断寻找符合条
2022-10-12
704BinarySearch(https://leetcodecn/problems/binarysearch/)思路二分法前提:有序数组数组内元素不重复易错点:二分法的边界条件。如究竟是while
2022-10-11
[27RemoveElement][(https://leetcodecn/problems/removeelement/)思路数组在内存中是连续的,根据此题要求不能删除,而是覆盖暴力解法此题暴力解法
2022-10-11
思路:递归+快速幂何为快速幂?例如x11,普通的求法是x不断自乘,时间复杂度O(n)这里采用快速幂:指数11转化为二进制1101,也就是不断除以2。时间复杂度降为O(logn)当要计算xn时,先递归计
2022-10-07
解法一:哈希表利用哈希表统计数字出现的次数,取最高时间复杂度:O(n)空间复杂度:O(n)解法二:排序排序后取中间元素时间复杂度:O(nlogn)空间复杂度:O(logn)解法三:BoyerMoore
2022-10-07
思路:因为要找最小且大于当前的字典序列,因此需要从后向前查找,将后面“大数”和前面小数互换并且希望这个变化后的序列要大于当前序列,需要变化幅度足够小,因此:在尽可能靠右侧进行交换,找升序在找到的“小数
2022-10-07
classSolution{public:boolisSubStructure(TreeNode*A,TreeNode*B){//A/B为空则返回falseif(Anullptr||Bnullptr)
2022-10-06
思路一:按位计算。逻辑运算符左边为false则不计算右边intsum(intn){n(n+sum(n1));returnn;}思路二:计算内存。和为(1+n)*n/2也就是二维数组的一半,bool大小
2022-10-06
60排列序列>方式一:找规律eg:n3,k3'123''132''213''231''312''321'每个首位12种即找到3/2即可<代码:classSolution:defgetPer
2022-09-03
59螺旋矩阵II>依据题意,和54题相似,填充方向按照上右下左(边界)即从左到右从上到下找出填充的边界,设置left0,rightn1,up0,downn1然后开始向内螺旋<开始模拟:cl
2022-09-03
58最后一个单词的长度>本题较为简单,但仔细一想,strip()split()俩者分不特别清楚,因此现做如下说明strip():删除Ⅰsplit():分割ⅡⅠ:默认删除空白符,若添加rm,则删除
2022-09-03
56合并区间>用sort()函数排序:按a[0],a[1]大小排序判断区间重叠:ega[1,4]b[2,3]a[1]>b[0]左边位置为a[0],右边位置为max(a[1],b[1])所以
2022-09-03