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

浙公网安备 33010602011771号