随笔分类 -  算法

汇集一些常见的算法面试题,涉及到数据结构和数学等
摘要:分析与思路: 直接从1到输入的整数之间进行遍历,把每个数从1到n/2之间进行整除。(因为每个数最大的除数不会超过自身的一半(其实还有更小的除数,就是平方根。后面会提及),然后将整除后的商与除数累积起来。判断是否等于自身即可。于是写出了以下代码: 1 #include <iostream> 2 #in 阅读全文
posted @ 2022-02-20 10:43 技术笔记记录 阅读(403) 评论(0) 推荐(0)
摘要:思路:直接把数据放到vector里,然后sort排序即可,还有注意c++的多组输入输出。没什么多说的,代码如下: 1 #include "iostream" 2 #include "vector" 3 #include "algorithm" 4 using namespace std; 5 int 阅读全文
posted @ 2022-02-20 10:07 技术笔记记录 阅读(256) 评论(0) 推荐(0)
摘要:思路:很自然的想到用map,利用map key-value 键值对的唯一性。遍历链表把每个元素保存到map里面,如果是重复的就不保存,同时就返回这个结果,就是想要的值。但是这样操作下来,空间复杂度是o(n),时间也是o(n),有没有更好的办法? 1 /* 2 struct ListNode { 3 阅读全文
posted @ 2022-02-20 10:02 技术笔记记录 阅读(40) 评论(0) 推荐(0)
摘要:1 #include "iostream" 2 #include "string" 3 using namespace std; 4 5 const int maxn = 90 + 5; 6 int dp[maxn]; 7 class Solution { 8 public: 9 /** 10 * 阅读全文
posted @ 2022-02-18 22:57 技术笔记记录 阅读(78) 评论(0) 推荐(0)
摘要:1 /** 2 * struct ListNode { 3 * int val; 4 * struct ListNode *next; 5 * ListNode(int x) : val(x), next(nullptr) {} 6 * }; 7 */ 8 class Solution { 9 pu 阅读全文
posted @ 2022-02-17 19:38 技术笔记记录 阅读(266) 评论(0) 推荐(0)
摘要:为啥这代码写的如此冗余 1 /* 2 struct RandomListNode { 3 int label; 4 struct RandomListNode *next, *random; 5 RandomListNode(int x) : 6 label(x), next(NULL), rand 阅读全文
posted @ 2022-02-15 21:46 技术笔记记录 阅读(43) 评论(0) 推荐(0)
摘要:题目描述如下: 分析:之前做过这样的一道题,但是写得太繁琐,今天重新做了这道题。很明显的感觉做出来的效率提升了很多。 这道题的一个难点是,怎么样处理字符串长度大于8,截断后又大于8,又需要截断的情况。很显然,这种场景的处理逻辑应该要用到while循环。完整的代码如下: 1 #include <ios 阅读全文
posted @ 2022-02-14 21:25 技术笔记记录 阅读(139) 评论(0) 推荐(0)
摘要:分析和思路:双指针,第一个指针先遍历k个节点,然后第二个指针从头结点开始遍历,当第1个指针遍历到尾结点时,第二个指针所在的节点就是倒数第k个节点,注意呀考虑k超出个数大小情况。 1 /** 2 * struct ListNode { 3 * int val; 4 * struct ListNode 阅读全文
posted @ 2022-02-12 09:48 技术笔记记录 阅读(50) 评论(0) 推荐(0)