- 博客(11)
- 收藏
- 关注
原创 算法练习(11):Reverse Nodes in k-Group
题意:题目意思是说给出一个链表,同时输入一个比链表长度小的正整数k,然后我们要做的是对于这个链表,从左到右,每k个节点作为一个整体逆转,如上面的例子所示,但是有个规定,不能改变节点本身的值,我们要做的是通过改变节点间的链接方式实现。 分析与思路:一开始肯定想过投机取巧通过改变节点的值来轻松实现,但是这题明确规定了不可以那么做,那么我们就只有老老实实改变节点连接方式实现了。我的想法是,既然要逆转k
2017-09-29 20:50:24 218
原创 算法练习(10):Merge k Sorted Lists
题意:把多个有序链表合并成一个有序链表。 分析与思路:题目简明易懂,但是也并非想象中的易事,思维上没有什么复杂的地方,我的思路是直接把第一个和第二个序列合并成一个整体,合并方法是把第二个序列一个个插入第一个链表中。再整体和第三个序列合并,再和第四个,直到结束。 代码: struct ListNode { int val; ListNode *next; Lis
2017-09-28 10:22:56 241
原创 算法练习(9):Longest Common Prefix
题意:找出所有字符串的共同最长前缀。 分析与思路:这道题,比较简单,我的方法是直接以第一个字符串为基准,依次比较每一个其他的字符串的对应下标的字符跟第一个字符串的是否相同,遇到不同就直接跳出循环。 代码: class Solution { public: string longestCommonPrefix(vector& strs) { string result = ""; i
2017-09-26 21:13:29 239
原创 算法练习(8):4Sum
题意:因为上一道题刚好是找出三个数的,这次是找出四个数的,所以就刚好放在一起做了。 分析与思路:这次的解法跟上一道题的解法思路,完全一模一样,不需要改变算法,只需要在最外层再加一层循环,并不会超时。所以还是直接上代码吧 代码: class Solution { public: vector> fourSum(vector& nums, int target) { vector> res
2017-09-26 20:58:08 283
原创 算法练习(7):3Sum
题目: 题意:题目意思是从给出的数组中找出三个和为0的元素,返回所有的组合。 分析与思路:对于这种题,没做过这类题的第一反应肯定是暴力求解,三次循环,超出所有的组合然后查重去掉重复的。但是这当然会超时毕竟复杂度达到了O(n3),因此必须另寻出路。为了避免一些重复的遍历,对于找和为定值的两个数时,我们有一种方便的方法:就是先把数组排序(从小到大),然后从数组两端向中间移动,和大于目标则右端指
2017-09-26 19:30:51 335
原创 算法练习(6):Container With Most Water
上题目先: 题意:这道题的意思是,以X轴为桶底,输入n个正整数作为桶边的高,然后这些桶边所在的位置正是它们在数组中的序号,也就是说两个桶边的距离是序号差的绝对值。 分析与思路:这道题目,由于是只需要找到能到达的最大容量值,看起来两层循环应该可以暴力求解的,但是我也不清楚直接暴力求解会不会超时,我是采用了一点稍微巧妙一点的方法的。我的想法是,容量大小由较短边和底长决定的,当一开始取底最长
2017-09-25 21:39:02 261
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人