刷题总结
hardenyeahyeah
这个作者很懒,什么都没留下…
展开
-
合并两个有序链表
题目描述:将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 题目分析:该题最简单的解法为递归法,对给定的两个链表首先判断是否为空,若是那么直接返回;若均不为空则判断两个链表所存储的整数大小,确定了存放顺序后便通过递归进行下一次判断。 代码展示: /** * Definition for singly-linked list.  ...原创 2019-08-13 17:14:05 · 112 阅读 · 0 评论 -
合并K个排序链表(递归)
题目描述:合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。 题目分析:该题我的思路是运用递归思想,将每个链表的头结点存储的整数值进行比较,最小的存到定义的list1节点中,然后再调用函数进行下一次比较。 代码展示: /** * Definition for singly-linked list. * public class ListNode {...原创 2019-09-11 22:40:21 · 516 阅读 · 0 评论 -
三数之和
题目描述:给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ,找出所有满足条件且不重复的三元组 题目分析:该题首先创建一个元素为List的List表,染回对给定数组进行排序,方便之后的数字移位。然后便建立一个双重循环,第一个循环是以三数之和中的第一个数为标志,然后再建立一个while循环,进行该循环的条件是第二个...原创 2019-09-04 12:05:44 · 81 阅读 · 0 评论 -
两两交换链表中的有序节点
题目描述:给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 题目分析:该题如果先确定链表的节点数再进行交换会非常麻烦,因此我们只需通过递归的方法来进行交换。在交换前首先需判断该节点与其之后的节点是否为空,若为空则将head节点直接返回,若均不为空则首先定义一个空节点用来存储交换后的头结点,然后再次调用swapPairs(...原创 2019-09-01 00:07:11 · 104 阅读 · 0 评论 -
删除链表的倒数第N个节点
题目描述:给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 题目分析:该题首先得确定所给链表是否为空以及节点总数,然后确定需要删除的节点是正数第几个,然后再进行删除操作。同时对于特殊长度或特殊位置的节点需要进行单独处理,比如链表为空,或者长度为1,删除第一个或最后一个节点等。 代码展示: /** * Definition for singly-linked li...原创 2019-08-13 11:39:09 · 85 阅读 · 0 评论 -
最长公共前缀
题目描述:编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。 题目分析:该题首先需确认字符数组中最短的一个元素的长度,然后进行字符串比较,从第一个元素开始依次往后,如果相等则继续,不等则停止。每比较出一个公共元素,便将其添加到目标字符串中。 代码展示: class Solution { public String longestCommonPrefi...原创 2019-08-12 17:23:29 · 80 阅读 · 0 评论 -
整数转罗马数字
题目描述: 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II。通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5...原创 2019-08-12 10:46:21 · 186 阅读 · 0 评论 -
盛水最多的容器
题目描述:给定n个非负整数a1,a2,…,an,每个数代表坐标中的一个点(i,ai)。在坐标内画n条垂直线,垂直线i的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 说明:你不能倾斜容器,且 n 的值至少为 2。 一. 暴力法 题目分析:我们可以通过双重循环计算每两条线构成的容器的盛水量,然后取...原创 2019-08-10 18:24:39 · 138 阅读 · 0 评论 -
Z字形变化
题目描述:将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 “LEETCODEISHIRING” 行数为 3 时,排列如下: 之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如"LCIRETOESIIGEDHN"。 题目分析:该题我们可以建立一个字符串数组用于存储每一行的字符串,然后按照从上到下,从下到上,从左到右的顺序进行遍历,最后将字符数组...原创 2019-08-10 16:54:04 · 227 阅读 · 0 评论 -
通过数组和哈希表实现两数之和
两数之和 题目描述: 给定整数数组nums和一个目标值target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案,但是你不能利用这个数组中同样的元素。 题目分析:该题我的思路是通过双重循环,求出数组中每两个元素的和,然后与target值比较,如果二者相等那么就将两个数组元素的下标输出。 代码展示: class Solution...原创 2019-08-03 10:30:10 · 132 阅读 · 0 评论 -
通过链表实现两数相加
两数相加 题目描述:给出两个非空的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。 您可以假设除了数字 0 之外,这两个数都不会以 0 开头。 通过递归方法 题目分析:该题我们可以通过递归的方法对两个链表相对应位置的数字相加,同时每次递归都会判断链表是否已结束。每当...原创 2019-08-04 17:21:54 · 230 阅读 · 0 评论 -
通过双重循环求无重复字符的最长子串长度
无重复字符的最长子串 题目描述:给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。 通过双重循环 题目分析:该题目要求是要求无重复字符的最长子串,即有两个要求,第一是不能有重复字符,第二是所有字符都得是连续的。因此我需要通过二重循环,从第一个元素开始建立一个外循环,同时从第一个元素开始再建立一个内循环,外循环的元素与内循环的元素进行比较,如果二者一直不相等,则将该段序列长度保存下来...原创 2019-08-05 16:03:22 · 112 阅读 · 0 评论 -
通过循环实现整数反转
整数反转 题目描述:给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。同时得注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。 通过while循环 题目分析:对于输入的数据 x 我们需要进行反转操作,因此需要建立一个 while 循环,循环条件为 x 不为0,同时我...原创 2019-08-05 23:13:34 · 997 阅读 · 0 评论 -
合并两个有序数组并寻找合并数组的中位数
寻找两个有序数组的中位数 题目描述:给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。你可以假设 nums1 和 nums2 不会同时为空。 通过循环 题目分析:该题可以通过循环比较将两个有序数组合并,然后便能找出中位数。 代码展示: class Solution { publ...原创 2019-08-07 09:55:33 · 822 阅读 · 0 评论 -
通过多重循环得到最长回文子串
最长回文子串 题目描述:给定一个字符串s,找到s中最长的回文子串。你可以假设s的最大长度为1000。 通过多重循环 题目分析:我们首先需要通过双重循环来确定当前进行判定的子串,为了使测试过程能够更加迅速,子串是由长到短进行判断。确定好之后我们再调用Judge()函数来判定该子串是否为回文子串,若是,则返回true,不是则返回false。最后输出得到的字符串。 代码展示: class Sol...原创 2019-08-08 17:57:11 · 153 阅读 · 0 评论 -
判断回文数
回文数 题目描述:判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 题目分析:该题思路是将数字所有位数保存在一个动态数组中,然后比较前半部分与后半部分对应的位置数字是否相等。同时为了定义动态数组,我使用的是ArrayList,通过add()方法向其中添加元素,然后使用get()方法调用其中元素进行数字的比较。 代码展示 class Solut...原创 2019-08-09 17:29:51 · 118 阅读 · 0 评论 -
删除排序数组中的重复项(双重循环)
题目描述:给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 示例: 题目分析:该题使用双重循环较为通俗易懂,外层循环是遍历每一个元素,判断其与之后一个元素大小是否相等,若相等则进入内层循环,以遍历到的这个元素为切点,将其后面的元素都往前移动一位,这样便可将...原创 2019-10-09 21:17:41 · 520 阅读 · 0 评论