随笔分类 - LeetCode with java
摘要:1.题目 2.思路 方法一:常规方法。 方法二:给面试官惊喜的解法。 3.java代码 方法一代码: 方法二代码:
阅读全文
摘要:1.题目 2.思路 思路和LeetCode105类似,见上篇。 3.java代码
阅读全文
摘要:1.题目 2.思路 3.java代码
阅读全文
摘要:1.题目 2.思路 3.java代码
阅读全文
摘要:1.题目描述 2.思路 思路简单,这里用一个图来举例说明: 3.java代码
阅读全文
摘要:1.题目描述: 2.解题思路: 题意:求一个字符串的最长回文子串。 方法一:中心扩展法。遍历字符串的每一个字符,如果存在回文子串,那么中心是某一个字符(奇数)或两个字符的空隙(偶数),然后分两种情况(奇数或偶数)向两边扩展。本文主要介绍这种方法。 因为回文字符串是以中心轴对称的,所以如果我们从下标
阅读全文
摘要:1.题目描述: 2.解题思路: 本题是要堆一个链表进行排序,并且要求时间复杂度为 O(n log n)。很明显,要用到分治的思想,用二分法进行归并排序:找到链表的middle节点,然后递归对前半部分和后半部分分别进行归并排序,最后对两个已排好序的链表进行Merge。 分为三步: (1)找到中间结点,
阅读全文
摘要:1.题目描述: 2.解题思路: 题意:两个由整数构成的有序数组nums1和nums2,合并nums2到nums1,使之成为一个有序数组。注意,假设数组nums1有足够的空间存储nums1和nums2的所有元素(>=m+n)。 思路很简单,直接上代码。 3.Java代码: (1)普通 测试结果: (2
阅读全文
摘要:1.题目描述: 2.解题思路: 题意:将K个已经排序的链表合并成一个排序的链表,分析并描述所用算法的复杂度。 方法一:基于“二分”思想的归并排序。本文用非递归和递归两种方法实现。 (1)非递归:归并排序”(Merging Sort):将两个或两个以上的有序表组合成一个新的有序表,无论是顺序存储结构还
阅读全文
摘要:1.题目描述: 2.解题思路: 本题是要合并两个已经有序的单链表,思路很简单,有两种方法:非递归和递归。 3.Java代码: (1)非递归: 为方便操作,定义一个辅助的头节点,然后比较原来两个链表的头节点,将小的那一个加入到合并链表,最后,当其中一个链表为空时,直接将另一个链表接入到合并链表即可。
阅读全文
摘要:题目描述: 解题思路: 题目大意:给定一个链表,反转第m到第n个结点部分,m、n满足1 ≤ m ≤ n ≤ length of list。 解题思路参照LeetCode206题,用迭代法,不过要注意以下几点: (a):为方便操作,新建一个辅助结点dummy,使其下一个结点指向头节点。 (b):维护4
阅读全文
摘要:题目描述: 解题思路: 关于单链表的反转有迭代和递归两种方法,方法不在多,本文主要介绍迭代的方法。 迭代的方法,要使用三个指针,需要注意一点的是指针的初始化,对第一个指针初始化为pre=null,第二个指针初始化为current=head,第三个指针初始化为next=null,不能将第一个指针pre
阅读全文
摘要:题目描述: 解题思路: 判断一个单向链表是否是回文链表,并且要求O(n)的时间复杂度和O(1)的空间复杂度。 方法有以下几种: 1、遍历整个链表,将链表每个节点的值记录在数组中,再判断数组是不是一个回文数组,时间复杂度为O(n),但空间复杂度也为O(n),不满足空间复杂度要求。 2、利用栈先进后出的
阅读全文
摘要:题目描述: 解题思路: 求回文数,并且要求不能使用额外的空间。思路很简单,算出x的倒置数reverse,比较reverse是否和x相等就行了。 Java代码: 程序结果:
阅读全文
摘要:题目描述: 解题思路: 反转的方法很简单,重点在于判断溢出的问题,下面给出了两种方法。 Java代码: 方法一: 判断溢出方法:在执行完int newResult=result*10+tail语句后,紧接着进行逆运算result=(newResult-tail)/10,如果出现溢出,那么逆运算后re
阅读全文
摘要:题目描述: 解题思路: 借用网上大神的思想:the basic idea is, keep a hashmap which stores the characters in string as keys and their positions as values, and keep two poin
阅读全文
摘要:题目描述: 解决思路: 此题较简单,和前面【LeetCode67】方法一样。 Java代码: 程序结果:
阅读全文
摘要:题目描述: 解题思路: 此题是要在不用操作符+和-的情况下,求两个整数的和。既然不能用内置的加减法,那就只能用位运算(&, |, ~, ^)。 (1)异或(xor):异或的数学符号为“⊕”,计算机符号为“xor”。 异或也叫半加运算,其运算法则相当于不带进位的二进制加法:异或的运算法则为:0⊕0=0
阅读全文
摘要:题目描述: 解题思路: 此题的思路简单,下面的代码用StringBuilder更加简单,注意最后的结果要反转过来。【LeetCode415】Add Strings的解法和本题一模一样。 java代码: 程序结果:
阅读全文
摘要:题目描述: 解题思路: java代码: 测试结果:
阅读全文

浙公网安备 33010602011771号