
算法
蔷薇尖的风
即使到了最后一步,我也还是不会放弃
展开
-
比n小的最大值
当前位的数值如果可以从nums数组中找到,那么【结果集】的对应位上添加这个数字(比较的位数需要比原来的少最低位,因为要保证小于n);当前位的数值如果从nums数组中找不到,那么就找比当前位小且最大的数字,添加到【结果集】中并且跳出整个循环;当前位的数值如果无法在nums数组中找到比它小的数值,即nums数组的值都比当前位要大,那么最高位舍弃,即收缩一位,跳出整个循环;题目:给定一个包含0-9的若干个不重复数字的数组,如{1,2,5}等,求出比n小的最大值。先排序给的nums数组。遍历n,从高位到低位。原创 2023-03-23 17:38:21 · 565 阅读 · 0 评论 -
单链表快排
遍历完整个链表,现在已是局部有序,将begin节点的值和left的值交换,实际上就是将主元放在局部有序的中间,即主元左边的值都是小于主元的,右边的值都是大于主元的;遍历整个链表,当right的值小于pivot时,交换left和right的值;时间复杂度为O(nlogn),空间复杂度为O(n)。声明两个指针,分别指向第一个节点和第二个节点;在所有递归中,重复第1、2、3和4步。记得最后将生成的节点全部删除。pivot选取第一个节点。原创 2023-03-23 17:32:02 · 67 阅读 · 0 评论