- 博客(17)
- 收藏
- 关注
原创 [LeetCode.68]文本左右对齐
采用的是每层每层的放置 数据数设为d,空格数设为b1.若层里面放置的d-b=1,则空格的长度都是121.若是末层,则前d-1个空格都设为1,最后一个(若有)设为b-d22.若不是末层,当d-1=0时,其后的空格数(若有)设为b 当d-1!=0时,根据相应的算法算出各个空格数的长度可能说的不太明确,对应代码看下:cla...
2018-09-02 00:06:22 372
原创 [LeetCode.60]第k个排列
n位组成12...n的string,求出第k个排列变动最高位时,中间间隔的递增数列是最多,根据k的大小,划分变动的位次关系举个栗子:123456789 ->213456789 这之间间隔了8!=40320个排列123456789->312456789 这之间间隔了2*8!个排列 变动一位后,除变动后的最高位,其余排序此时可列出代码class S...
2018-08-23 10:25:27 135
原创 [LeetCode.59]螺旋矩阵 II
n*n的矩阵,顺时针递增赋值若n为奇数,则最后一圈是 从左到右赋值若n为偶数,则最后一圈是 从左到右 从上到下 从右到左赋值代码如下:class Solution {public: vector<vector<int>> generateMatrix(int n) { vector<vector<int&g...
2018-08-22 23:17:37 176
原创 [LeetCode.57]插入区间
题目比较简单 但是考虑的点需要详尽了 不多说 直接上代码 自己写的代码 有些冗余大佬有想法的话可以留言给我更正/** * Definition for an interval. * struct Interval { * int start; * int end; * Interval() : start(0), end(0) {} ...
2018-08-22 16:55:08 160
原创 剑指offer面试题56-链表中环的入口节点
书中所述解决问题的方法值得一看,此处我介绍一种利用C++中 STL中容器的解决方法,相对来说比较直接 利用set元素的唯一性结合find方法可快速定位入口结点代码如下://Edited by clee//time:2018/8/16#include<iostream>#include<set>class ListNode{public: i...
2018-08-16 17:13:08 144
原创 [LeetCode.44]通配符匹配
利用动态规划求解,自己使用了下迭代,在匹配数据较大时,由于重复了操作,造成TLE错误,遂后面改用动态规划。话不多说,代码如下//44class Solution {public: bool isMatch(string s, string p) { int sLen=s.size(),pLen=p.size(); vector<vector&...
2018-08-13 18:33:14 148
原创 [LeetCode.32]最长有效括号
思路:另建一个容器栈,遇见'(',压入遇见')',分情况1.容器栈为空时,continue;2.容器栈size为1时, 若栈顶为'(',pop出,压入num 2; 若栈顶为num,pop出即可;3.容器栈size大于1时, 若栈顶为'(',po...
2018-07-28 17:34:28 191
原创 [LeetCode.25]k个一组翻转链表
思路,同LeetCode.24 唯一不同就是现在是k个一组反转,那就设置pBegin作为反转节点的首段,pEnd作为反转节点的末端,调用函数反转部分链表(大多做过)代码如下:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * Lis...
2018-06-23 01:39:43 180
原创 [LeetCode.24]两两交换链表中的节点
思路,使用三个指针,一个是指向改变前两个节点中前向节点pFirst,一个指向其中的后向节点pSecond,还有一个是该前向节点的前向节点pZero,依照题意更改该三个节点的指向即可。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ...
2018-06-22 21:11:33 127
原创 [LeetCode.23]合并K个排序链表
思路,用到分治法 Divide and Conquer Approach。简单来说就是不停的对半划分,比如k个链表先划分为合并两个k/2个链表的任务,再不停的往下划分,直到划分成只有一个或两个链表的任务,开始合并。举个例子来说比如合并6个链表,那么按照分治法,我们首先分别合并1和4,2和5,3和6。这样下一次只需合并3个链表,我们再合并1和3,最后和2合并就可以了。参见代码如下:/** * De...
2018-06-22 18:11:51 132
转载 [LeetCode.20]有效的括号
思路,依次将这些字符入栈,判断栈顶元素与当前元素是否是对应上的,是则pop,不是则入栈,到最后判断栈是否为空。class Solution { public: bool isValid(string s) { stack<char> result; int n=s.size(); if(n==0) return...
2018-05-11 23:42:27 148
原创 [LeetCode.18]四数之和
根据:https://blog.csdn.net/weixin_39460182/article/details/80209214改进一个版本code:class Solution{public: vector<vector<int>> fourSum(vector<int>& nums, int target) { vector<ve...
2018-05-11 15:46:23 340
转载 [LeetCode.17]电话号码的字母组合
思路:使用回溯+递归code: class Solution {public: /* * @param digits: A digital string * @return: all posible letter combinations */ vector<string> letterCombinations(strin...
2018-05-11 10:29:43 916
原创 [LeetCode.16]最接近的三数之和
伪代码:index从零到vector数组长度的大小-1逐级递增遍历{ j=index+1;k<vector数组长度的大小-1; //注意:j从index+1开始,避免重复三数相加 判断j小于k { 判断三数之和与目标数的差与offset的大小 { 保存threeSum和offset; } j++/...
2018-05-06 09:48:11 197
原创 [LeetCode.15]三数之和
自己的解法:先排序->分大于零和小于等于零两个部分->取任一一个部分中的两个数->再在另一个部分取一个数匹配是否等于0(0+0+0=0已单独讨论)出现的问题:运行到311/313测试用例时出现TLE。class Solution{public: vector<vector<int>> threeSum(vector<int>& n...
2018-05-05 21:00:08 160
转载 [LeetCode.11]盛最多水的容器
双index解法减少循环的核心思路是省去没有必要的遍历,并且确保所需的答案一定能被遍历到假设现在有一个容器,则容器的盛水量取决于容器的底和容器较短的那条高则我们可以从最大的底长入手,即当容器的底等于数组的长度时,则容器的盛水量为较短边的长乘底可见 只有较短边会对盛水量造成影响,因此移动较短边的下标,并比较当前盛水量和当前最大盛水量。直至左右下标相等。主要的困惑在于如何移动双index才能保证最大的...
2018-05-04 16:00:57 226
转载 [LeetCode.10] 写一个正则表达式匹配
首先,抛开.和*不管,如何递归地判断两个字符串相等呢?class Solution { bool isMatch(string s, string p) { int slen = s.length(); int plen = p.length(); if (slen == 0 && plen == 0) ...
2018-05-04 09:51:28 305
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人