随笔分类 - c++学习
摘要:Given 1->2->3->4->5->NULL and k = 2,return 4->5->1->2->3->NULL. 定义两个指针,分布指向 list 的头结点和尾结点, 将头结点插到尾部 代码:
阅读全文
摘要:将由同样的字符,不同排列组成的字符串聚在一起 解题思路:hashmap 将每一个字符相同的string,当做hashmap的key(字符相同,那就要对string进行排序喽) hashmap的second value 存的是index, 哪些值都对应这个key。(因此这存的是一组值要用vector)
阅读全文
摘要:类似 二叉树遍历到根节点path,也类似深度优先搜索 首先保持一个result的vector<vector>,是引用类型。 声明一个保持中间结果的vector,这个vector 始终在变化,在递归中使用 每次让target-candidates[i],将candidate[i]加入temp中 如果t
阅读全文
摘要:rotated sorted array, 肯定有一半是有序的,只有一半中有旋转。 1 2 3 4 5 6 5 6 1 2 3 4(s-mid 是旋转的) 3 4 5 6 1 2 (mid-end 是旋转的) 没有旋转的一半中,起始点肯定小于终止点,找到没有旋转的一半,确定目标值是不是在这一半,如果
阅读全文
摘要:数值处理的题目,有两点要考虑的地方: 正负号的问题,对于正数除正数, 负数除正数。。。。 处理越界的问题。 解决方案:加减法,最简单的方法是用被除数一直减去除数,直到为0, 但是复杂度高。 优化方案: 使用2分法加速这个过程,不断给除数*2,任何一个证书可以表示为以2 的幂为底的一组基的线性组合,n
阅读全文
摘要:对于ksum 问题: 首先对nums 进行排序, 2sum, 用两个指针指p,q向头和尾, 如果之和大于target,q 向前移,如果之和小于target ,p向后移。如果等于加入结果中。 如果p>q 结束 3sum,用于指针i指向一个基准,定义两个指针p,q, 分别指向i+1, end(),对于基
阅读全文
摘要:方法一: 从digits 的第一字符开始遍历 每次结果都是在之前的结果的基础上,加上当前数字可能的情况: 所以使用一个vector<string> result 存储每次加的结果;最开始为""; 创建一个当前的结果vector<string> temp:要遍历result中的每一个并且遍历当前字符的
阅读全文
摘要:使用深度优先搜索的方法遍历每一条枝,遍历完的终止条件为左右子树都为空,这时候将这条枝的string 插入vector 中。 第二种方法,在函数内部进行递归:
阅读全文
摘要:题目 Given a singly linked list, determine if it is a palindrome. Follow up: Could you do it in O(n) time and O(1) space? 题意分析 判断一个链表是否是回文链表。 所谓回文,即从左往右
阅读全文
摘要:使用栈实现队列: 将栈中的元素取出再存入一次就是队列: 更简单一点实现,pop和top的实现互相借助时:
阅读全文
摘要:实现考虑迭代的方法: 一直迭代交换左右子树: 不迭代的方法, 使用队列: 用队列保存要待要交换左右子树的兄弟节点
阅读全文
摘要:动态规划: 当前店可能被偷也可能没被偷,但是我始终考虑当前情况下的最优情况。 m表示动态规划数组,nums.length*2, 每个店被偷或没被偷两种情况: 被偷,那要选前一家没被偷的情况 m[i][1]=m[i-1][0]+nums[i]; 没被偷,上一家可被偷也可能没被偷,选能偷到的最多钱m[i
阅读全文
摘要:stack: 先进后出 pop(); push(); top(); size(); empty() queue: 先进先出 pop(); push(); front(); back(); size(); empty() 使用队列实现栈: 最重要的是考虑pop函数,因为要pop 最后进入的:
阅读全文
摘要:Reverse a singly linked list 每次取链表的头结点,插入当作当前链表的头 以前我写链表老是想用 while(head->next) { .... } 最后还得再考虑最后一个结点。根本没有必要:
阅读全文
摘要:最简单的思想,就是穷举比较: 还好能通过,但时间复杂度太高 相当于要比较一个对应位置的字符出现的次数是不是相同: 使用hashmap 来记录字符出现的个数: 但是出现, abb, aba 这种情况会判为true, 因为出现的次数是对的。 考虑这里要比较出现的次数还要比较出现的位置:
阅读全文
摘要:出错: 最开始的时候是这么写的: 一直有错,开始不知道为啥,现在终于懂了,想用引用来改变传入的值,但是引用必须有引用的对象,这里引用的对象没有初始化,声明引用时,必须同时对其进行初始化。
阅读全文
摘要:首先,最笨的方法,考虑不能被所有小于它素数除尽的数就是素数: 这么low,肯定时间复杂度太高,每次都要都所有素数检查一次 改进一下,使用高级的埃拉托斯特尼筛法(好难拼呀),如果一个数是另一个数的倍数,那这个数肯定不是素数,所以从2 开始将所有素数的倍数都标注为非素数 (但是,2的倍数是非素数,我们可
阅读全文
摘要:找最短的到叶节点的长度: 一考虑广度优先搜索(使用队列,不用 recursive) 使用递归形式
阅读全文
摘要:1. 求深度: recursive 遍历左右子树,递归跳出时每次加一。 2. 广度搜索 使用队列 3. 二叉查找树 由于二叉查找树是递归定义的,插入结点的过程是:若原二叉查找树为空,则直接插入;否则,若关键字 k 小于根结点关键字,则插入到左子树中,若关键字 k 大于根结点关键字,则插入到右子树中。
阅读全文
摘要:Given a string s consists of upper/lower-case alphabets and empty space characters ' ', return the length of last word in the string. If the last word
阅读全文

浙公网安备 33010602011771号