leetcodec++题库_[LeetCode] [C++] 第一轮刷题总结(持续更新~~~)

LeetCode 解题报告

====================================================================

**LeetCode 1. Two Sum **

解题思路:两次循环遍历数组,找到两个元素和等于target

注意点:无

详细信息:http://www.cnblogs.com/lihuagang/p/leetcode_1.html

LeetCode 2 Add Two Numbers

解题思路:用LinkList代表整数中每一个数字,模拟加法进位的方式进行求和计算。

注意点:需要考虑大数情况,不能直接用int保存每个LinkList对应的值。考虑 [5] [5] -> [0, 1] 这种单独进位的情况

详细信息:http://www.cnblogs.com/lihuagang/p/leetcode_2.html

LeetCode 3. Longest Substring Without Repeating Characters

解题思路:两层循环,外层循环负责定位substring的起始点,内层循环负责定位substring的终点

字符串从前向后遍历,每次遍历一个字符,将其加入set,判断下一个字符是否在set中,

如果已经在,则退出内层循环

LeetCode 4. Median of Two Sorted Arrays

解题思路:将两个有序数组合并后,再找出中数。利用C++ vector动态增加特性

LeetCode 5. Longest Palindromic Substring

解题思路:中心回溯法。由中心字符向两边找,如果两边字符一样,再向外扩散,直到不一样的情况,就可以找出最长回文子串了

注意点:

注意区分偶数字符回文子串以及奇数字符个数回文子串

注意向两侧遍历时,遇到字符不一样的情况时,回文子串是start+1,end-1. 不要算上左右不等的那两个字符

详细信息:http://www.cnblogs.com/lihuagang/p/leetcode_5.html

LeetCode 6. ZigZag Conversion

解题思路:字符串之字形排序。找出排序规律。

规律:一共有N行,则total = 2*(N-1)个字符组成一个完整序列。序列中下标idx % total

如果大于N则下标换为(total-idx) % total ,下标对应在第几行

注意点:首先读懂题目,了解要求,找到每个位置应该存放什么字符的规律.

详细信息:http://www.cnblogs.com/lihuagang/p/leetcode_6.html

LeetCode 7. Reverse Integer

解题思路:通过bool值判断是否为负数,然后将负数转换为正数。再将正数的每一个数字进行vector

保存。然后先通过判断vector中每个数字判断是否会反转溢出

注意点:1.x == -2147483648直接返回0,因为取正数时已经溢出 2. 判断存储的每一个数字翻转后是否溢出

详细信息:http://www.cnblogs.com/lihuagang/p/leetcode_7.html

LeetCode 206. Reverse Linked List

解题思路:

将链表每个节点数值存在vector中,再反序遍历生成新的链表。这种解法需要空间复杂度O(N)

空间复杂度为1的做法,在每次遍历其中一个节点时,用一个指针保存当前节点的前一个节点,

一个指针保存当前节点的下一个节点在每次遍历时,都操作当前节点的翻转动作

整个过程分4步骤

(1)获取当前的下一个节点指针,用于遍历到下一个节点 (2)当前节点的下一个节点重新指向到前一个

(3)前一个等于当前 (4) 当前等于下一个 即形成了一个节点的完整翻转逻辑

注意方向:空间复杂度O(1)的方式,针对每个节点进行翻转 最终翻转这个单项链表.注意原来的

头结点的next复制NULL

详细信息:http://www.cnblogs.com/lihuagang/p/leetcode_206.html

LeetCode 237. Delete Node in a Linked List

解题思路:这道题要换一个思路,不能考虑将node前面的节点的next直接指向node的下一个,因为node前面那个节点的

指针在单向链表中根本不可能获取到。再考虑到要删除的node不为尾节点,这里考虑采用node拷贝替换的方式

将当前要删除的node值完全拷贝为他后一个的值(node->val= node->next->val, node->next = nodex->next->next)

类似于深拷贝概念,将后面Node完整拷贝到前面,形成删除了前面节点的效果

注意点:转换思维,不能寻找Node前一个节点的死路上遇到死胡同。 单项链表中,没法获取当前Node之前的Node

详细信息:http://www.cnblogs.com/lihuagang/p/leetcode_237.html

LeetCode 344 Reverse String

解题思路:将string中前后字符颠倒

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值