![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法/数据结构
文章平均质量分 56
等风来不如迎风去
音视频行业深耕多年,熟悉会议、直播、RTC,对在线教育、娱乐秀场等音视频端到端技术及系统架构有深入研究
展开
-
【C++】剑指 Offer 22. 链表中倒数第k个节点 (-)
地址 一次性通过 但可以看到内存肯定耗费比较多, 因为我额外搞个一个vector 存指针。 我的代码 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNod..原创 2022-05-18 10:33:10 · 199 阅读 · 0 评论 -
【C++】剑指 Offer 21. 调整数组顺序使奇数位于偶数前面 (-)
加了保护还报错 难道是因为输入了 空的,导致异常? 加了[] 判断 【1,3,5】 过不了 就加上这个break 就都ok了。 这是因为 在后面j 位置,拿到了一个奇数,这个时候需要在j之前,遍历到一个偶数,位置i,二者对调。 当j 发现遍历过来的i 跟自己一样了,就如同[1,3,5],i和j都是2了,说明了啥,说明j 前面都是奇数,没有偶数啊。 这个时候就直接break掉内层的while ,然后break掉外层的while,退出执行。 如果不加找不到就break掉外层的这个逻辑,会有.原创 2022-05-18 00:46:00 · 194 阅读 · 0 评论 -
【C++】剑指 Offer 18. 删除链表的节点
1 应该难点在待删除的结点的前一个结点如何保存? 通过独立的变量prev保存 2 头尾结点要注意 刚好是头结点单独搞了一个判断 3 结束条件:while p ,p 是当前那个 我出错的地方: p->next 为空,说明是最后一个,我break了 那么当前结点就得不到判断了。 竟然么有删掉? 找到问题了 保存prev的时候,用了已经后移的p赋值 应该先保存prev, 然后,移动p 但还有错误:如果待删除是最后一个,删不掉: 原来是之前思路不清晰的时候,加的最后一个结点的判断..原创 2022-05-17 22:49:38 · 232 阅读 · 0 评论 -
【C++】剑指 Offer 17. 打印从1到最大的n位数
剑指 Offer 17. 打印从1到最大的n位数原创 2022-05-16 01:07:06 · 912 阅读 · 0 评论 -
【c++】剑指 Offer 11. 旋转数组的最小数字 二分查找(待续)
我的解法比较low 大神们分析的头头是道,直接二分法查找 这种旋转数组是分为两部分的 只需要去掉尾部含有的连续的相同的元素 就可以适用二分查找法 查找的是个啥呢? 应该是中间那个最小值的位置 随想大神分析的依旧很到位 0189.旋转数组.md 给出了跟我类似的low解法和二分法 知乎 掘金林小鹿 大神的图神了 剑指 Offer 11. 旋转数组的最小数字 为了便于分析,我们先将数组中的数画在二维坐标系中,横坐标表示数组下标,纵坐标表示数组数值, 我们发现除了最后水平的一段(黄..原创 2022-05-15 23:46:30 · 172 阅读 · 0 评论 -
【C++】剑指 Offer 11. 旋转数组的最小数字
我的这种解法是不登大雅之谈堂的。 数据量大,那么效率就低。 而且还要处理 一个元素这种特例。 文内详述。 知乎上有位大神也是跟我一样的思路 方程式实验中学 他解释的比我好: 既然是旋转的,那么数组的是数值规则应该是:递增+最小值+递增,最大值和最小值紧挨着,所以只要看哪里不是递增的就知道最小值在哪。代码如下: public class MinArray { public static int minArray(int[] numbers) { //min默认初始值就是第一个..原创 2022-05-15 23:38:29 · 149 阅读 · 0 评论 -
【C++】剑指 Offer 10- II. 青蛙跳台阶问题
0070.爬楼梯.md 这位大神解释的思路,已经很到位了。 大神,这就是斐波那契数列 如图, 大神自己推导的思路是 n 楼梯的方法数目是由n-1 和n -2 楼梯方法数目之和。 自己列举了一下,果然是这样的规律: 大神对于dp[0] 说不考虑,但是我看不考虑会报错: dp【0】=1 class Solution { public: int numWays(int n) { int dp[101]; dp[0] = 1; dp[1..原创 2022-05-14 23:58:37 · 167 阅读 · 0 评论 -
【C++】剑指 Offer 10- I. 斐波那契数列
剑指Offer10-I.斐波那契数列 大神的讲解: 取余 Tips : 设正整数x, y, z ,有取余公式:(x + y) % z = (x % z + y % z) % z 按照题意递归写,直接超出时间限制 求f(n)就是分别求f(n-1)和f(n-2),然后递归执行下去 class Solution { public: int fib(int n) { if(n == 0) { return 0; ..原创 2022-05-14 17:16:38 · 214 阅读 · 0 评论 -
【C++】剑指 Offer 06. 从尾到头打印链表
由于前面两个题目是stack的 所以感觉找到帮手了, 结果还是出错了。 基础不牢啊。 出错了 感觉这个是最简单的吧,结果还是出错了 链表的第一个元素竟然么有出来 又错了,header->next 可能是空指针的 又错了,这下少了最后一个输入的 终于该对了,代码比之前都简单 直接用指针p挨个指向单链表的每个结点 p 就拿到 next 的值就可以逐个向下 p 为null ,就是列表遍历结束了, 此时p是租后一个结点的next域了。 /** * Definition..原创 2022-05-14 14:13:57 · 213 阅读 · 0 评论 -
【C++】剑指 Offer 05. 替换空格
剑指 Offer 05. 替换空格 大神分析 在网络编程中,如果URL参数中含有特殊字符,如空格、'#‘等,可能导致服务器端无法获得正确的参数值。我们需要将这些特殊符号转换成服务器可以识别的字符。转换的规则是在’%‘后面跟上ASCII码的两位十六进制的表示。比如空格的ASCII码是32,即十六进制的0x20,因此空格被替换成"%20"。再比如’#'的ASCII码为35,即十六进制的0x23,它在URL中被替换为"%23"。 请实现一个函数,把字符串 s 中的每个空格替换成"%20"。 示例 1: 输入原创 2022-05-14 13:49:11 · 212 阅读 · 0 评论 -
【C++】剑指 Offer 03. 数组中重复的数字
剑指 Offer 03. 数组中重复的数字 https://leetcode.cn/problems/shu-zu-zhong-zhong-fu-de-shu-zi-lcof/solution/mian-shi-ti-03-shu-zu-zhong-zhong-fu-de-shu-zi-b-4/ 官方的HashSet 是java的 看起来跟我的思路是一样的,只是我用map代替了hashset std map 的遍历方法内存耗费较大,耗时比较多 这里一定要返回int 所以搞了一原创 2022-05-14 09:20:14 · 148 阅读 · 0 评论 -
【C++】剑指 Offer 30. 包含min函数的栈
剑指 Offer 30. 包含min函数的栈 题目不是说没有元素,top就返回false 而是top一定要返回一个int值 这个时候,vector 在没有元素的时候,不知道返回个啥 换用stack,看了下stack的操作,都是 o1的, stack 直接top 返回,好像也会报错: 9/19 无法通过 最后一个值是min,并不是top 出错 看了下大神的写法,关键是是用std min 来返回 std min 比直接 比较,有什么不可告人的高等智慧? int原创 2022-05-14 08:36:47 · 170 阅读 · 0 评论 -
【C++】剑指offer:两个栈实现队列
剑指offer2 地址 队列是尾部进入,头部做删除,对应了题目的俩func abc 入,队头就是a, 栈是先入后出,cba入,那么栈顶就是a 所以要删除队头a,a 如果先入栈1,那么再栈底,没有办法删掉。 那么,把栈1数据转移到栈2, 最先压入栈1的a,出栈1,放入栈2,之后,就变为栈2的顶了。 所以出栈就是从栈1 转移到栈2后,出栈。 如果栈2,没有,并且栈1 也没有这时候返回-1 如果栈2 没有,栈1有,那么从栈1做转移。 这个时候,栈1要全部转移到栈2, 才能找到自己的队列头的第一个元素,出现再..原创 2022-05-14 01:16:28 · 156 阅读 · 0 评论 -
【算法】【sort 2.2.1】归并排序
分治法代表 递归 sort + merge labuladong 排序过程 [Running] g++ test_sort_guibing_2.2..1.cpp -std=c++14 -o test_sort_guibing_2.2..1.exe && ./test_sort_guibing_2.2..1.exe 81 72 67 89 80 65 77 83 82 68 70 88 --resize--12 --b-- sort;lo 0 hi 11 sort;lo 0 hi..原创 2020-06-28 22:47:14 · 346 阅读 · 0 评论 -
【算法】【sort 2.1.3】希尔排序
shell sort 是一种优化的 插入排序 基于插入排序,每个不断缩小的区间得到后,都要做插入排序 效率不稳定,但是一般比 插入排序好 插入排序主要是做相邻的交换 这东东有三层for 执行过程: [Running] g++ test_sort_xier_2.3.cpp -std=c++14 -o test_sort_xier_2.3.exe && ./test_sort_xier_2.3.exe 100 99 8 7 200 3 1 43 3 7 max h 7 43 99原创 2020-06-28 13:10:29 · 819 阅读 · 0 评论 -
EECS 489实验3:带Bloom过滤器的ImageDB
EECS 489实验3:带Bloom过滤器的ImageDB lab3 服务器(imgdb)最终将成为我们的分布式哈希表(DHT)节点,但是在本实验中,我们假设只有一个这样的节点。 中文 介绍 就完成本练习所需编写的行数而言,它很短。您只需要编写约10行代码。任务1有两行,任务2有8行。所需的时间长短取决于您对模块化算术和按位运算的满意程度。 我们假定在本实验中设置客户端-服务器。服务器(...原创 2020-02-02 17:24:01 · 534 阅读 · 0 评论 -
第一章
INSERT_SORT(A)1. for j2. do key3. #把A[j]插入到前面已经排好序的序列A[1...j-1]里面去4. i5. while i>0 and A[i]>key6. do A[i+1]7. i8. A[i+1]原创 2010-01-26 12:06:00 · 922 阅读 · 0 评论 -
chapter 2 : The Complexity of Algorithms and the Lower Bounds of Problems
Definition (complexity)。The space complexity of an algorithm is the amount of memory it needs to run to completion. 。The time complexity of an algorithm is the amount of computer time it needs原创 2009-11-16 17:53:00 · 1328 阅读 · 0 评论