LeetCode
Dyson~
小小黑
展开
-
LeetCode -- 3. 无重复字符的最长子串 java
题目描述:解题思路:可以String类的方法,用两层循环,第一层循环是不断从前往后走,用 i 遍历字符串,第二层循环则从第一层循环开始往后查找最长无重复子串。在第二层循环中,每次按照索引 j 将字符串拆分成子串,然后再从 i 开始查找该子串的位置,如果该位置就是索引 j 当前的位置,则继续往下寻找, 否则跳出循环,更新 max class Solution { ...原创 2018-11-23 15:36:41 · 478 阅读 · 0 评论 -
每日一题--LeetCode 415 (字符串相加)java
题目描述:解题思路:直接将两个字符串每一位提出来,相加,并且判断是否有进位insert方法和append方法的区别:insert可以在指定位置插入,append只能在最后位置插入代码如下:class Solution { public String addStrings(String Num1, String Num2) { //将字符串转变为数组 ...原创 2018-11-06 16:37:58 · 342 阅读 · 0 评论 -
LeetCode -- 50 Pow(x, n)(C语言版)
题目描述:代码如下(附有详解):double myPow(double x, int n) //如果n为零,表明幂数为0,直接返回1 if(n == 0) return 1; //如果n为零,表明幂数为0,直接返回x if(n == 1) return x; //p值相当于将幂数折半,减...原创 2018-10-15 17:05:26 · 253 阅读 · 0 评论 -
LeetCode--105 从前序与中序遍历序列构造二叉树 (Construct Binary Tree from Preorder and Inorder Traversal)(C语言版)
题目描述:解题思路:通过先序遍历来确定每次所要创建的根节点 通过 i 来将中序遍历的区间不断划分为左右区间 再分别在左右区间中继续执行上述步骤代码如下:/** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left;...原创 2018-10-08 16:40:20 · 339 阅读 · 0 评论 -
LeetCode--110 平衡二叉树 ( Balanced Binary Tree )( C语言版 )
题目描述 :方法一:需要重复遍历节点多次解法,当遍历到一个节点时就将左右子树的的深度计算出来,然后判断是否满足条件/** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *rig...原创 2018-10-07 15:30:39 · 514 阅读 · 0 评论 -
LeetCode--154 寻找旋转排序数组中的最小值 II ( Find Minimum in Rotated Sorted Array II)(C语言版)
题目描述:解题思路:当数组有重复元素时,只要Mindex与Rindex和Lindex下标代表的元素都不相等时还是可以继续使用二分查找,但是当Mindex与Rindex和Lindex下标代表的元素都相等时,这时使用就不能使用二分查找,需要将这一段区间单独取出来使用顺序遍历的方法算出数组中最小值。代码如下://顺序遍历求出最小值int MinInorder(int* Nums,in...原创 2018-10-12 09:18:55 · 261 阅读 · 0 评论 -
LeetCode--153 寻找旋转排序数组中的最小值 (Find Minimum in Rotated Sorted Array)(C语言版)
题目描述:解题思路:可以使用顺序遍历,将最小值记录下来,时间复杂度为O(n),但是根据题目描述,该数组为旋转排序数组,这里就可以联想到二分查找,试着用二分查找的思想,首先使用Lindex和Rindex记录左右区间的下标,然后再用Mindex表示区间中间元素的下标,根据旋转特性可以将数组分为,大的递增区间和小的递增区间,在大区间中所有元素都大于小区间元素,当我们取到中间元素时就可以判断,当中...原创 2018-10-11 21:29:59 · 231 阅读 · 0 评论 -
LeetCode 122 --买卖股票的最佳时机 II ( Best Time to Buy and Sell Stock II ) ( C语言版 )
题目描述 : 代码如下 : int maxProfit(int* p, int ze) { int ret=p[0]; int n=0; for (int i=1;i<ze;i++){ //判断是否可以交易 if(p[i]>ret) //将所有交易的利润累加起来 n+=...原创 2018-09-14 18:30:38 · 222 阅读 · 0 评论 -
LeetCode 121--买卖股票的最佳时机( Best Time to Buy and Sell Stock ) ( C语言版 )
题目描述 : 代码如下 : int maxProfit(int *prices, int len){ int max=0,i=0,temp; for(int j=1;i<len&&j<len;j++){ temp=prices[j]-prices[i]; ...原创 2018-09-14 18:22:55 · 270 阅读 · 0 评论 -
LeetCode 190--颠倒二进制位 ( Reverse Bits ) ( C语言版 )
题目描述 : 使用左移操作符和右移操作符 , 每次使用m的末位和n右移后按位与 , m向左跑 , n向右跑代码如下 : uint32_t reverseBits(uint32_t n) { uint32_t m=0; for(int i=0;i<32;i++){ m<<=1; m|=(n&1); ...原创 2018-09-14 18:15:51 · 1051 阅读 · 0 评论 -
LeetCode 3-- 无重复字符的最长子串 ( Longest Substring Without Repeating Characters )
题目描述 : 思路 : 这里可以借助位图的思想去解决该问题 , 位图传送门 -- https://blog.csdn.net/ds19980228/article/details/82592294使用两个指针 , 一个快指针 , 一个慢指针 , 快指针先走 , 每走一步,判断快指针所指字符在位图中是否已经存在,不存在,存储字符信息并继续走,直到快指针指向重复字符串 , 若快指针-...原创 2018-09-14 17:17:57 · 130 阅读 · 0 评论 -
每日一题--LeetCode 21 (合并两个有序链表) java
题目描述:代码如下(附有解析):/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */class Solution { publ...原创 2018-11-09 09:49:22 · 175 阅读 · 0 评论 -
每日一题--LeetCode 125 (验证回文串)java
题目描述:解题思路:先将特殊情况考虑,比如字符串为空或者字符串只有一个字符,然后可以将字符串中的字母都转化为大写或小写。自己编写一个方法判断该字符是否为数字字符或者为字母,再使用左右指针向中间扫描,当左右字符都为字母或数字时判断二者是否相等,若相等继续循环判断,若不相等直接返回false。代码实现如下:class Solution { public boolean isP...原创 2018-11-07 16:22:09 · 445 阅读 · 0 评论 -
每日一题--LeetCode 234(回文链表)java
题目描述:请判断一个链表是否为回文链表。示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: true进阶:你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题?解题思路一:先使用快慢指针将链表划分,然后将划分出来的后半段链表逆置,这里使用额外的空间创建新的链表,再将两个链表从尾到头进行比...原创 2018-11-17 19:54:41 · 477 阅读 · 0 评论 -
每日一题--LeetCode 142 (环形链表II)java
题目描述:解题思路: 如图所示 , 当fast与slow相遇时,slow还没走完链表,而fast已经在环内循环了n圈了,假设slow在相遇前走了s步,则fast走了2s步,设环长为r,有2s=s+nr,即s=nr.由上图可知a+x=s, x+y=r,而我们的目标是找到a的位置。设上图那个拱起的曲线的长度为y,有a+x=s=nr=(n-1)r+r=(n-1)r+y+x ,则a=(n-1)r+...原创 2018-11-15 08:40:27 · 445 阅读 · 0 评论 -
每日一题--LeetCode 25 (k个一组翻转链表)java
题目描述:给出一个链表,每 k 个节点一组进行翻转,并返回翻转后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么将最后剩余节点保持原有顺序。示例 :给定这个链表:1->2->3->4->5当 k = 2 时,应当返回: 2->1->4->3->5当 k = 3 时,应当返回: 3-&g...原创 2018-11-16 14:21:26 · 2291 阅读 · 1 评论 -
每日一题--LeetCode 28(实现strStr())java
题目描述:代码如下(附有解析):class Solution { public int strStr(String haystack, String needle) { //如果为空直接返回0 if(needle.equals("")){ return 0; } //如果haystack长...原创 2018-11-12 18:36:26 · 183 阅读 · 0 评论 -
每日一题--LeetCode 58 (最后一个单词的长度)java
题目描述:解题思路:可以使用String类中的trim()方法(将字符串左右空格去掉)和charAt(index)(将字符串按照索引转为单个字符)代码如下:class Solution { public int lengthOfLastWord(String s) { if(s.length()==0){ return 0; ...原创 2018-11-14 12:52:40 · 325 阅读 · 0 评论 -
每日一题--LeetCode 141(环形链表)java
题目描述:解题思路:快慢指针,若为环形链表,那么两个指针一定会在链表某处相遇,若不是环形链表,那么快指针一定会先走到空或者快指针的next指针为空代码如下:/** * Definition for singly-linked list. * class ListNode { * int val; * ListNode next; * ListNo...原创 2018-11-13 21:28:32 · 182 阅读 · 0 评论 -
每日一题--LeetCode 2(两数相加)java
题目描述:代码如下:/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */class Solution { public Lis...原创 2018-11-08 10:31:29 · 188 阅读 · 0 评论 -
每日一题--LeetCode 53(最大子序和)java
题目描述:代码如下:class Solution { public int maxSubArray(int[] nums) { if(nums.length==1){ return nums[0]; } int frist,second,max; max=frist=nums[0]; ...原创 2018-11-11 09:34:31 · 752 阅读 · 0 评论 -
每日一题--LeetCode 387 (字符串中的第一个唯一字符)java
题目描述:代码如下:class Solution { public int firstUniqChar(String s) { String tmp=s; char []data=tmp.toCharArray(); if(data.length==1){ return 0; } ...原创 2018-11-05 15:42:05 · 234 阅读 · 0 评论 -
每日一题--LeetCode 108(将有序数组转化为二叉搜索树) java
题目描述:解题思路:二叉搜索树的特点是左子树>根节点>右子树,而且可以发现题目中所给的数字就是由二叉搜索树中序遍历得到,数组中间的值就为根节点,以根节点为划分线左边为左子树,右边为右子树,然后采用二分和递归的思想重建二叉搜索树即可;代码实现如下:/** * Definition for a binary tree node. * public class Tree...原创 2018-11-10 10:15:30 · 306 阅读 · 0 评论 -
LeetCode 82-- 删除排序链表中的重复元素 II ( Remove Duplicates from Sorted List II ) ( C语言版 )
题目描述 : 代码如下 (附有解析 ):/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNode* deleteDuplicates(struct ListNode* hea...原创 2018-09-19 17:02:18 · 268 阅读 · 0 评论 -
LeetCode 31--下一个排列 ( Next Permutation )
题目描述: : : 根据题目所给条件 : 输入 : 1 , 2 , 3 → 1 , 3 , 2 1 , 3 , 2 → 2 , 1 , 3 2 , 1 , 3 → 2 , 3 , 1 2 , 3 , 1 → 3 , 1 , 2 3 , 1 , 2 →...原创 2018-09-13 20:39:08 · 153 阅读 · 0 评论 -
LeetCode 138--复制带随机指针的链表 ( Copy List with Random Pointer ) ( C语言版 )
题目描述 : 解题思路 : ( 复杂链表的复制 ) 传送门 -- https://blog.csdn.net/ds19980228/article/details/81033631代码如下 : /** * Definition for singly-linked list with a random pointer. * struct RandomListNode { *...原创 2018-09-18 17:07:11 · 456 阅读 · 0 评论 -
LeetCode--删除排序数组中的重复项 II (Remove Duplicates from Sorted Array II ) ( C语言版 )
题目描述 : 解题思路 : 这里和之前删除排序数组中的重复项的解决方法一样, 只需要用一个flag去标记即可删除排序数组中的重复项 --传送门--https://blog.csdn.net/ds19980228/article/details/82531923代码如下 : int removeDuplicates(int* nums, int n) { int ret...原创 2018-09-08 22:17:47 · 199 阅读 · 0 评论 -
LeetCode--28 实现strStr() ( Implement strStr() ) ( C语言版 )
题目描述 : 代码如下 : int strStr(char* haystack, char* needle) { int hlen=strlen(haystack); int nlen=strlen(needle); //如果needle为空字符串,则nlen为0,返回0 if(nlen==0) return 0; //注意之处...原创 2018-09-11 20:57:32 · 283 阅读 · 1 评论 -
LeetCode--删除排序数组中的重复项( Remove Duplicates from Sorted Array ) ( C语言版 )
题目描述 : 解题思路 : 我们只需要去从一个位置 i 开始寻找数组中和 ret 不相等数的数, 然后将寻找到的数放到该位置的上, 更新ret, 再去寻找下一个和 ret 不相等的数, 然后再次更新ret, 最后ret的大小就代表了数组中所有不相等数的数量代码如下 : int removeDuplicates(int* nums, int n) { int ret=0,i...原创 2018-09-08 18:19:17 · 374 阅读 · 0 评论 -
LeetCode--62 不同路径 ( Unique Paths ) ( C语言版 )
题目描述 : 解题思路 : 机器人每次只能向下或者向右走 , 所以左边界和上边界都只有一种走法接下来的 ( x , y ) 的走法就是 ( x-1 , y )和 (x ,y-1 ) 走法之和 , 当走到最右下方时结束 , 总共需要的步数就是循环结束后 ( x-1 , y-1 ) 坐标所存的数值代码如下 : int uniquePaths(int m, int n) { i...原创 2018-09-11 19:11:31 · 429 阅读 · 1 评论 -
LeetCode--对称二叉树 ( Symmetric Tree ) ( C语言版 )
对称二叉树 : 给定一个二叉树,检查它是否是镜像对称的。思路 : 根据对称二叉树的特性, 可以使用递归去求解, 这里只需要判断左孩子的左边和右孩子的右边 或者 左孩子的右边和右孩子的左边是否相等或为空即可;代码如下 : /** * Definition for a binary tree node. * struct TreeNode { * int val; *...原创 2018-09-01 19:07:41 · 1209 阅读 · 0 评论 -
LeetCode--最长公共前缀 ( Longest Common Prefix) ( C语言版 )
最长公共前缀 : 编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 " " , 思路 : 先判断为空 , 或者只有一个字符串的情况 ; 再用两个指针去计算前两个字符串的公共部分,找到相同前缀 ; 然后去判断数组中剩余的字符串与首字符串的相同部分 , 若新找到的比开始小则更新尾部指针尾指 , 若尾指针等于首字符串 , 则证明无相同前缀 , 直接返回 ; ...原创 2018-08-29 22:35:06 · 3135 阅读 · 1 评论 -
LeetCode--回文数 ( Palindrome Number ) ( C语言 )
回文数 : 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。思路 : 1 : 判断是否为负数 , 负数肯定不是回文数 2 : 根据回文数的性质 , 将数字反转判断是否与反转前相等 , 若相等则为回文数bool isPalindrome(int x) { int tmp=0,ret=x; if(x<0)...原创 2018-08-29 19:45:30 · 1179 阅读 · 1 评论 -
LeetCode--反转整数( Reverse Integer ) ( C语言版 )
反转整数 : 给定一个 32 位有符号整数,将整数中的数字进行反转。检查是否溢出 : 可以通过逆向推 , 判断num是否与tmp相等 通过求余数的方法 , 判断num的余数是否与ret的余数相等int reverse(int x) { int ret=x,num=0; while(ret!=0) { //记录num改变之前的值 ...原创 2018-08-29 19:31:25 · 984 阅读 · 0 评论 -
LeetCode--旋转链表( C语言版 )
题目: 给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。输入: 1->2->3->4->5->NULL, k = 2输出: 4->5->1->2->3->NULL解释: 向右旋转 2 步: 4->5->1->2->3->NULL解题思路 : 首先用len原创 2018-08-16 23:07:17 · 502 阅读 · 0 评论 -
LeetCode 63 -- 不同路径 II ( Unique Paths II ) ( C语言版 )
题目描述 : 解题思路 : 机器人每次只能向下或者向右走 , 我们可以用一个二维数组记录机器人每走到一个位置时 , 所经历的可能性 , 而当它走到一个位置时所经历的可能性就是( x-1 , y )和 (x ,y-1 ) 走法之和 , 但是这里有一个问题就是遇到障碍物是如何计算 如下图所示 : 当我们遇到障碍物时就将障碍物坐标对应的位置赋0 , 当我们在处理第一行和第一列时 , ...原创 2018-09-15 17:38:16 · 790 阅读 · 0 评论 -
LeetCode 55 -- 跳跃游戏 ( Jump Game ) ( C语言版 )
题目描述 : 解题思路 : 本题目不能一开始从最大长度进行跳跃 , 应该一次次遍历每个数组元素 , 采用贪心法 , max表示每次能够到达的最远距离 , 使用max=max<i+nums[i]?i+nums[i]:max; 求出上一步的最优解 , 当max小于i的时候证明已经不可能到达终点了 , 直接返回false , 当i走到末尾时则证明可以达到最后的位置 .代码如下 : ...原创 2018-09-15 22:53:16 · 1648 阅读 · 0 评论 -
LeetCode 24--两两交换链表中的节点 ( Swap Nodes in Pairs ) ( C语言版 )
题目描述 : 解题思路 : 分为两种情况处理 , 当要交换的节点是链表的前两个节点时 , 当交换的节点非前两个节点时 ;代码如下 : /** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */stru...原创 2018-09-18 16:26:31 · 636 阅读 · 0 评论 -
LeetCode 21--合并两个有序链表 ( Merge Two Sorted Lists ) ( C语言版 )
题目描述 : 方法一 : 递归合并代码如下 : /** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNode* mergeTwoLists(struct ListNode* ...原创 2018-09-18 15:54:40 · 528 阅读 · 0 评论 -
LeetCode 264--丑数 II ( Ugly Number II ) ( C语言版 )
题目描述 : 当我们去遍历查找第n个丑数时 , 则会出现超出时间限制 ;据观察可知丑数就相当于三个已排序数组的合集1*2 2*2 3*2 4*2 5*2 6*2 8*2 .......'1*3 2*3 3*3 4*3 5*3 6*3 8*3 .......1*5 2*5 3*5 4*5 5*5 6*5 8*5 .......当前丑数都是由上一个丑数乘以质因数得到的 , 那么...原创 2018-09-13 10:22:07 · 632 阅读 · 0 评论