自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 收藏
  • 关注

原创 leetcode pow(x,n)

题目描述:    题目要求x的n次方,这题写个简单的for循环是肯定会超时的,看了大家做的基本都是递归的方法,这里介绍一种迭代的方法供参考,代码如下:class Solution { public: double myPow(double x, int n) { if(n == 0) return 1; if(n > 0) return helper(x,n); el...

2018-05-21 21:06:04 421

原创 leetcode77 组合 / combinations

题目描述:    简单的dfs题,代码如下:class Solution {public: vector<vector<int>> combine(int n, int k) { vector<vector<int>> res; vector<int> out; calc(n,k,...

2018-05-15 19:29:21 266

原创 leetcode 86 分隔链表 / partition list

题目描述:    又是关于链表的操作题,感觉自己做这类题比较缺乏经验,想到哪写到哪,代码原没有别人简洁明了,还需要多多学习。参考代码:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x)...

2018-05-14 21:00:50 333

原创 leecode 61 旋转链表 / rotate list

题目描述:    水题,和以前做过一道删除倒数第n个节点类似,点击打开链接,这题思路和做法也差不多,要找到旋转后新的头结点,具体代码如下:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(...

2018-05-08 19:33:04 136

原创 leetcode 43 字符串相乘 / MULTIPLY STRINGS

题目描述:    大数相乘,解题思路有点像多项式相乘,传送门:点击打开链接  这篇博客写得比较清晰,具体代码如下:class Solution { public: string multiply(string num1, string num2) { int n1 = num1.size(), n2 = num2.size(); vector<int> tmp(n1+...

2018-05-07 22:08:30 165

原创 leetcode 79 单词搜索 / word search

题目描述:解题思路:搜索题,每个点分上下左右四个方向搜索,对每个点都跑一次,代码如下:class Solution { public: bool exist(vector<vector<char>>& board, string word) { if(board.empty()) return false; int m = board.size()...

2018-05-05 20:55:25 251

原创 leetcode 84 柱状图中最大矩形 / Largest Rectangle in Histogram

题目描述:    自己想了想发现只有暴力做,但这题明显是有简便算法的,网上看了看主流的解法是用单调(递增)栈做,算法大概思想是:维护一个单调递增序列,当前元素大于栈顶元素时则进栈,当前元素小于栈定元素时则处理完前面元素能得到的最大值后在进栈。    这种方法非常的巧妙,感觉应该是本题的最优解法了,比如你想用暴力做,max[i]代表从i号节点开始的最大矩形,对单个节点处理一次用时o(n),对每个节点...

2018-05-03 16:21:39 333

原创 leetcode 39 组合求和 / combination sum

题目描述:解题思路:递归搜索,找到 = target 的组合存下来即可,代码如下:class Solution { public: vector<vector<int>> combinationSum(vector<int>& candidates, int target) { vector<vector<int>> ...

2018-05-03 12:17:39 294 1

原创 leetcode 64 最小路径和 / minimum path sum

题目描述:    很简单的动态规划题,注意写得时候先把第一行和第一列dp了,这样代码更美观,source code:class Solution {public: int minPathSum(vector<vector<int>>& grid) { int m = grid.size(); int n = grid[0]....

2018-04-28 20:09:08 112

原创 leetcode 22 括号生成 / generate parentheses

题目描述:     比较简单的搜索题,注意判断当前匹配错误的条件,在合法匹配中,任意时刻左括号的个数都是大于等于右括号个数的,具体代码如下:class Solution { public: vector<string> generateParenthesis(int n) { vector<string> res; generate(n,n...

2018-04-27 16:32:26 125

原创 LeetCode 搜索二维矩阵 / search a 2D matrix

题目描述:    解题思路:题目要求尽可能快,自然想到双重二分,难点是边界判断要搞清楚,建议写之前大脑先模拟一下,头尾两个指针(start 和 end) 越考越近的时候会发生什么。这时候会出现两种情况 (1):start 和 end 重合,然后在循环判断一次结束                               (2):start 和 end 相邻,然后在循环判断一次,这时候可能直接结束...

2018-04-27 00:55:17 256

原创 leetcode 75 分类颜色 / sort colours

题目描述:   这道题应该是一道很经典的题目(以前好像在某司的面试题见过),解题代码也相当具有美感(没做出来参考别人的),设立的三个指针 i,j,k是精髓之处,一定要理解这三个指针的含义,i,j,k分别指向当前已处理好的字符串的最后一个0,1,2。比如,当前已处理好的字符串是 0 0 0 0 1 1 1 2 2 2 *,那么i,j,k分别指向最后一个0,1,2。m指向*,*号为待处理元素,    ...

2018-04-26 23:17:25 2072 2

原创 leetcode 68 文本左右对齐/ textJustification

题目描述:    比较繁琐的模拟题,写了三四个小时,无参考硬干出来了,一开始还比较高兴,结果查看别人的示范样例发现20行就搞出来了。。思路大体上都差不多:一行一行的处理,第一步确认每一行能装多少个元素,确认完之后再根据不同情况分配空格,对最后一行要特殊处理。代码如下:示范代码:class Solution {public: vector<string> fullJustify...

2018-04-25 23:48:48 472

原创 leetcode 最接近的三数之和 / 3Sum closest

题目描述:    这道题和前面一道题 三数之和:https://blog.csdn.net/twt727/article/details/80003382  类似,思路也差不多,都是头和尾设置两个指针从两头往中间扫,不同之处在于需要设置一个变量 minRes 来保存最接近的三数之和,边扫描边对 minRes 进行更新,代码如下:class Solution {public: int th...

2018-04-25 16:36:25 113

原创 leetcode 36 有效的数独 / valid sudoku

题目描述:题目还是比较简单的,没让你判断当前数独是否有解,只判断当前填的数是否符合规定就行。解题思路:设置三个访问数组,分别代表行,列和块(3*3),初始时值全部置0,对于每个元素,第一次访问后就置1,在访问就说明数据重复了,直接 return false;代码如下:class Solution {public: bool isValidSudoku(vector<vector&l...

2018-04-25 15:16:45 98

原创 leetcode 206 反转链表 / reverse linked list

题目描述:这道题应该是一道比较经典的面试题了,思路有迭代和递归两种,个人觉得两种都理解还是需要一定时间思考的,这题tag应该为普通。递归:时间复杂度o(n),空间复杂度o(n)(此写法每层空间都要传头结点)class Solution {public: ListNode* reverseList(ListNode* head) { if(head == NULL || h...

2018-04-24 22:49:23 109

原创 leetcode 19 删除倒数第n个节点/Remove Nth Node From End of List

题目描述:题目要求使用一趟扫描实现删除,那么怎么才能办得到呢?思路如下:设立两个指针 p和q,初始时均指向头结点,然后让p先走n-1步,走完之后,p和q在同时往后移动,直到p走到尽头,那么现在q所指的就是倒数第n个节点了,此时只需要把q所指节点删除就可以了。具体实现的时候稍稍和上面有点区别,<1>:为了便于删除操作,先让p走n步,然后p,q再一起走到,这样走到尽头的时候q所指的就是倒数...

2018-04-24 19:15:18 113

原创 leetcode 24 两两交换链表中的节点/ swap nodes in pairs

题目描述:思路:直接模拟,先写一个大概的框架,然后各种修修补补:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Sol...

2018-04-23 19:10:13 113

原创 leetcode 11 盛水的容器 / container with most water

题目描述:一开始感觉这道题应该有简便算法的,但没想出来,就直接暴力做的:class Solution {public: int maxArea(vector<int>& height) { int n = height.size(); if(n == 2){ if(height[0] > height[1]...

2018-04-22 23:21:25 179

原创 LeetCode 4 两个排序数组的中位数 / Median of Two Sorted Arrays

题目描述:  这题还是有点难度的,想了比较久,最开始的时候没看见复杂度要求,心想不就是把两个数组合并起来就可以了么,为什么tag是困难,结果看见复杂度要求,才知道要二分做,一开始二分又想错了方向,尝试建立两个数组各自的中位数的联系,结果写了一大堆发现自己走错了路,最后参考别人的思路才做出。解题思路:本题核心函数就一个: double findKth(vector<int> &n...

2018-04-21 18:42:34 143 1

原创 LeetCode 495 提莫攻击/teemo attacking

题目描述:这道题本来挺简单的,直接模拟就可以,先看别人的代码:class Solution {public: int findPoisonedDuration(vector<int>& timeSeries, int duration) { if (timeSeries.empty()) return 0; int res = 0, n...

2018-04-20 00:50:33 268

原创 LeetCode 15 三数之和 / threeSum

题目描述:此题如果纯暴力的话应该是会超时的(没试过)考虑在暴力的基础上优化一下,先对数组排序,然后枚举第一个数 i,那么剩下两个数之和为 j + k = 0 - i,然后设立两个指针j和k指向头和尾,对剩下的数组从两头到中间搜索答案,时间复杂度为o(n方),代码如下:class Solution {public: vector<vector<int>> three...

2018-04-19 13:16:45 125

原创 麻将胡牌算法

前几天面试被叫做的一个东西,顺便也记录在这里。判断当前的牌是否 能胡牌,没考虑特殊情形,思路就是先枚举对子,然后在搜索n*顺子 + m * 刻子形式,搜索成功则能胡。代码如下:<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title></title>

2018-04-18 22:35:58 534

原创 LeetCode 101 对称二叉树 / symmetric tree

题目描述:解题思路:此题和上题有点类似,同样递归解决,isSymmetry(TreeNode * p,TreeNode * q) 表示如果以p的  以右孩子为根的子树  和  q的  以左孩子为根的子树对称并且 p的  以左孩子为根的子树 和 q的  以右孩子为根的子树对称,那么以p为根的子树和以q为根的子树对称。代码如下:class Solution {public: bool isS...

2018-04-18 22:24:04 132

原创 leetcode 5 最长回文子串 / longest palindromic substring

题目描述:此题算是一个比较经典的问题了,做法有很多,比如暴力 动态规划 manacher算法,这里采用著名的manacher算法,算法时间复杂度为o(n),算法思想感觉和kmp有相似之处,此链接有详细介绍:点击打开链接其中,要注意几个重要的变量的含义,id:当前中心点                                                  p[id]:回文串长度的一半(包...

2018-04-18 18:12:35 125

原创 leetcode 6 Z字形变化/zigzag

题目描述:刚开始看到题目半天没看懂什么意思,后来查了查才理解题意,就是叫你把字符串按照图中从上到下从左到右(z字形)摆放,然后再按行读出来摆放后的字符串是什么。解题思路:观察到Z字形排列的第一行为等差数列,考虑从第一行入手,第二行的坐标分别为第一行每个字符的坐标 -1 或者 +1,第三行的坐标分别为第一行每个字符的坐标 -2 或者 +2 。。。依次类推,通过此思路进行模拟。代码如下:(不知道能不能...

2018-04-18 16:13:13 197

原创 leetcode 100 相同的树

最近在刷leetcode ,顺便记录下来,就当笔记啦。题目描述:思路:先序遍历,先对当前节点值进行判断,然后在递归判断左右子树。代码如下:/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * ...

2018-04-18 15:58:54 271

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除