leetcode
Rachelxuan11
这个作者很懒,什么都没留下…
展开
-
500. Keyboard Row
Input: [“Hello”, “Alaska”, “Dad”, “Peace”] Output: [“Alaska”, “Dad”] 题目要求:如果一个词语的字母来自同排,则输出 不学C++都不行啊,还是C++比较方便class Solution {public: vector<string> findWords(vector<string>& words) {原创 2017-06-04 18:05:34 · 150 阅读 · 0 评论 -
leetcode小岛问题2道 (DFS的递归法和迭代法应用)
Recursive递归时间复杂度O(R*C):所有坐标遍历一遍空间复杂度O(R*C):seen[][]所有坐标遍历一遍,对每个坐标计算其所在的的island的大小,并与历史最大值比较,取max。计算island的大小时,在1.此坐标不出界2.此坐标不为0 3.此坐标没被计算过(每个坐标只能归入一个island)的情况下,递归计算其与上下左右的面积之和class Solution { int[原创 2017-11-25 21:32:02 · 1028 阅读 · 0 评论 -
123. Best Time to Buy and Sell Stock III
题目所给数组的元素prices[i],表示i当天的股票价格,要求求出最大利润,并要求只能买卖两次。解析本题目与最初的这道题的区别在于对购买次数提出了限制。原题只要累加每次上升的幅度即可。WA解法通过了143/198个测试用例。未通过的边缘用例特点为:在两次盈利之间有一个小小的亏损,在只选取最大和次大的利润累加的思路下,不能比较这两次盈利减去小亏损与次大利润的大小。例如:prices[ ]={6,1,原创 2017-12-08 17:46:58 · 187 阅读 · 0 评论 -
448. Find All Numbers Disappeared in an Array
问题来源:Find All Numbers Disappeared in an Array 很久没有刷题了,感觉大脑开始迟钝,所以决定重拾刷题的乐趣。一开始不要太难,选一些通过率高的题目做,然后就看到了这个题目。我有些吃惊,这个题我虽然知道两种解法,但本身还是有难度的,居然通过率这么高。然后就搜索相关网页,看到一个和它很接近的题目《Find All Duplicates in an Array》,转载 2017-08-12 21:51:03 · 213 阅读 · 0 评论 -
136:Single number I
描述:Given an array of integers, every element appears twice except for one. Find that single one.Note: Your algorithm should have a linear runtime complexity. Could you implement it without using extra转载 2017-08-09 16:23:18 · 166 阅读 · 0 评论 -
617. Merge Two Binary Trees
合并二叉树。 方法1递归:以前序遍历的方式处理 两棵树的节点。如果树1为空,则合并的结果是树2,反之亦然。 剩下的情况就是参数中的两个节点都不是NULL。 将节点2的值合并到节点1中。 处理左节点:递归两棵树的左节点。 处理右节点:递归两棵树的右节点。 C++:/** * Definition for a binary tree node. * struct TreeNode {原创 2017-07-22 21:32:15 · 189 阅读 · 0 评论 -
412. Fizz Buzz
如果不加memcpy和memset会出现乱码,我居然是第一次知道sprintf这个函数(羞愧到无地自容),需要借助另外一个数组过度一下,过滤掉乱码字符。char** fizzBuzz(int n,int *returnSize) { int i; *returnSize=n; char buf[12]; char** re=(char**)malloc(sizeof(原创 2017-06-04 10:42:56 · 173 阅读 · 0 评论 -
575. Distribute Candies
Input: candies = [1,1,2,2,3,3] Output: 3原创 2017-06-02 17:20:33 · 209 阅读 · 0 评论 -
557. Reverse Words in a String III
Input: “Let’s take LeetCode contest” Output: “s’teL ekat edoCteeL tsetnoc”以不带空格的连续字符串作为字符反转的单位。为了均一处理每个字符串片段,把结尾字符多加了一个空格,最后又去掉了。i的作用是找到第一个字符串片段,或者每个空格后面的第一个字符串片段。j的作用是找到结束的位置。后来发现这种方法很冗余,下次直接让i=j-1就好原创 2017-06-01 18:00:08 · 172 阅读 · 0 评论 -
476. Number Complement
求一个数的complement number. input=5 output=2 input=2 output=1 由于2^2<=5<2^3,二进制表示输出为111-101=2. 由于2^1<=2<2^2,二进制表示输出为11-10=1. int findComplement(int num) { int i=0; while(pow(2,i)<=num)原创 2017-06-01 10:33:48 · 194 阅读 · 0 评论 -
463. Island Perimeter
求二维地图中land的周长,即黄色的线。 1.遍历,若为1,count++; 2.为1的情况下,看此cell上边和左边是否为1,即是否有连接处,repeat++;class Solution {public: int islandPerimeter(vector<vector<int>>& grid) { int count=0; int repeat=原创 2017-06-04 21:57:14 · 166 阅读 · 0 评论 -
496. Next Greater Element I
Input: nums1 = [4,1,2], nums2 = [1,3,4,2]. Output: [-1,3,-1] findNums是nums的子集。按findNums中元素出现的顺序,找出nums中此元素后一个比它大的数字。没有的话则返回-1. 1.由于需要按第一个数组对应的顺序返回一个数组,因此考虑设一个map保留一组映射关系。 2.由于是找此元素的后面比它大的值,且对于每个元素都原创 2017-06-04 21:35:16 · 233 阅读 · 0 评论 -
665. Non-decreasing Array
题目要求给一个数组,若可以修改其中一个数字,使其为不减序列,则true.思路1把数组元素的大小想成阶梯,true的条件是仅出现一次锯齿状edge case1,3,4,2,5 true;关键在于对锯齿边界部分的3个元素how to modifyAC代码class Solution { public boolean rankCheck(int[] nums, int x){ re原创 2017-12-04 15:56:46 · 179 阅读 · 0 评论