随笔分类 -  Java刷题从1开始

摘要:这道题要求将数组中奇数放前面偶数放后面,不需要排序。 第一时间想到的是额外数组res存结果,遍历原数组奇数存在res前面,偶数存在res后面。 时间复杂度O(n),空间复杂度O(n),好处是没有修改原数组 class Solution { public int[] exchange(int[] nu 阅读全文
posted @ 2021-02-06 15:37 zjcfrancis 阅读(78) 评论(0) 推荐(0)
摘要:这道题表面上是一个简单的数组排序输出最小值的问题,但考虑到旋转数组的部分有序性,可以简化查找最小值的过程。 如我选择从数组末尾开始查找,由于旋转,数组末端旋转后的部分从尾部遍历是递减的,当num[i]<num[i-1]时,找到旋转前数组第一个元素,即最小值。 代码如下: class Solution 阅读全文
posted @ 2021-02-01 02:58 zjcfrancis 阅读(40) 评论(0) 推荐(0)
摘要:给你一个整数数组 nums ,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。 示例 1: 输入: [2,3,-2,4]输出: 6解释: 子数组 [2,3] 有最大乘积 6。示例 2: 输入: [-2,0,-1]输出: 0解释: 结果不能为 2, 因为 阅读全文
posted @ 2020-05-18 17:41 zjcfrancis 阅读(157) 评论(0) 推荐(0)
摘要:输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点。 示例: 给定一个链表: 1->2->3->4->5, 和 k = 阅读全文
posted @ 2020-05-11 06:59 zjcfrancis 阅读(99) 评论(0) 推荐(0)
摘要:实现 pow(x, n) ,即计算 x 的 n 次幂函数。 示例 1: 输入: 2.00000, 10输出: 1024.00000示例 2: 输入: 2.10000, 3输出: 9.26100示例 3: 输入: 2.00000, -2输出: 0.25000解释: 2-2 = 1/22 = 1/4 = 阅读全文
posted @ 2020-05-11 06:07 zjcfrancis 阅读(150) 评论(0) 推荐(0)
摘要:你有一个用于表示一片土地的整数矩阵land,该矩阵中每个点的值代表对应地点的海拔高度。若值为0则表示水域。由垂直、水平或对角连接的水域为池塘。池塘的大小是指相连接的水域的个数。编写一个方法来计算矩阵中所有池塘的大小,返回值需要从小到大排序。 示例: 输入:[ [0,2,1,0], [0,1,0,1] 阅读全文
posted @ 2020-04-20 17:49 zjcfrancis 阅读(1325) 评论(0) 推荐(0)
摘要:输入一个整数 n ,求1~n这n个整数的十进制表示中1出现的次数。 例如,输入12,1~12这些整数中包含1 的数字有1、10、11和12,1一共出现了5次。 示例 1: 输入:n = 12输出:5示例 2: 输入:n = 13输出:6 限制: 1 <= n < 2^31 来源:力扣(LeetCod 阅读全文
posted @ 2020-03-29 19:18 zjcfrancis 阅读(190) 评论(0) 推荐(0)
摘要:有两种特殊字符。第一种字符可以用一比特0来表示。第二种字符可以用两比特(10 或 11)来表示。 现给一个由若干比特组成的字符串。问最后一个字符是否必定为一个一比特字符。给定的字符串总是由0结束。 示例 1: 输入: bits = [1, 0, 0]输出: True解释: 唯一的编码方式是一个两比特 阅读全文
posted @ 2020-03-29 03:20 zjcfrancis 阅读(191) 评论(0) 推荐(0)
摘要:给定一个带有头结点 head 的非空单链表,返回链表的中间结点。 如果有两个中间结点,则返回第二个中间结点。 示例 1: 输入:[1,2,3,4,5]输出:此列表中的结点 3 (序列化形式:[3,4,5])返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。注意,我们返回了一个 阅读全文
posted @ 2020-03-23 17:59 zjcfrancis 阅读(146) 评论(0) 推荐(0)
摘要:给定整数数组 A,每次 move 操作将会选择任意 A[i],并将其递增 1。 返回使 A 中的每个值都是唯一的最少操作次数。 示例 1: 输入:[1,2,2]输出:1解释:经过一次 move 操作,数组将变为 [1, 2, 3]。示例 2: 输入:[3,2,1,2,1,7]输出:6解释:经过 6 阅读全文
posted @ 2020-03-22 18:57 zjcfrancis 阅读(156) 评论(0) 推荐(0)
摘要:有两个容量分别为 x升 和 y升 的水壶以及无限多的水。请判断能否通过使用这两个水壶,从而可以得到恰好 z升 的水? 如果可以,最后请用以上水壶中的一或两个来盛放取得的 z升 水。 你允许: 装满任意一个水壶 清空任意一个水壶 从一个水壶向另外一个水壶倒水,直到装满或者倒空 示例 1: (From 阅读全文
posted @ 2020-03-21 10:15 zjcfrancis 阅读(297) 评论(0) 推荐(0)
摘要:给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。 在构造过程中,请注意区分大小写。比如 "Aa" 不能当做一个回文字符串。 注意:假设字符串的长度不会超过 1010。 示例 1: 输入: "abccccdd" 输出: 7 解释: 我们可以构造的最长的回文串是"dccac 阅读全文
posted @ 2020-03-19 14:21 zjcfrancis 阅读(160) 评论(0) 推荐(0)
摘要:将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4 思路: 因为两个列表都是有序列表,可以直接进行递归调用,有序地从两个链表中取节点拼接成新的链表。 代码: /** * 阅读全文
posted @ 2020-03-18 19:46 zjcfrancis 阅读(123) 评论(0) 推荐(0)
摘要:思路: 利用题目条件,从右上角看,矩阵是一个二叉搜索树,往左变小,往下变大。 因此可以从右上角开始,如果当前位置元素比 target 大,则行 row++; 如果当前位置元素比 target 小,则列 col--。 这样可以把时间复杂度从暴力搜索的O(nm)降到O(n+m) 代码: 时间复杂度O(m 阅读全文
posted @ 2020-03-18 16:58 zjcfrancis 阅读(173) 评论(0) 推荐(0)
摘要:思路1:原地置换 因为数组长度为n,所有数字都在0~n-1的范围内,所以假如数组中数字不重复,则数组元素的下标等于数组元素的值。 在此基础上,遍历数组,将元素放到值所对应的索引处。如果该索引处已存在该元素,则该元素重复,返回结果。 代码: 时间复杂度O(n),空间复杂度O(1) class Solu 阅读全文
posted @ 2020-03-18 13:48 zjcfrancis 阅读(144) 评论(0) 推荐(0)
摘要:矩形以列表 [x1, y1, x2, y2] 的形式表示,其中 (x1, y1) 为左下角的坐标,(x2, y2) 是右上角的坐标。 如果相交的面积为正,则称两矩形重叠。需要明确的是,只在角或边接触的两个矩形不构成重叠。 给出两个矩形,判断它们是否重叠并返回结果。 示例 1: 输入:rec1 = [ 阅读全文
posted @ 2020-03-18 11:58 zjcfrancis 阅读(168) 评论(0) 推荐(0)
摘要:数组的每个索引做为一个阶梯,第 i个阶梯对应着一个非负数的体力花费值 cost[i](索引从0开始)。 每当你爬上一个阶梯你都要花费对应的体力花费值,然后你可以选择继续爬一个阶梯或者爬两个阶梯。 您需要找到达到楼层顶部的最低花费。在开始时,你可以选择从索引为 0 或 1 的元素作为初始阶梯。 示例  阅读全文
posted @ 2020-01-15 19:55 zjcfrancis 阅读(117) 评论(0) 推荐(0)
摘要:编写一个程序,找出第 n 个丑数。 丑数就是只包含质因数 2, 3, 5 的正整数。 示例: 输入: n = 10输出: 12解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 个丑数。说明: 1 是丑数。n 不超过1690。 来源:力扣(LeetCode)链接:htt 阅读全文
posted @ 2020-01-14 18:28 zjcfrancis 阅读(196) 评论(0) 推荐(0)
摘要:给定长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。 示例: 输入: [1,2,3,4]输出: [24,12,8,6]说明: 请不要使用除法,且在 O(n) 时间复杂度内完成此题。 阅读全文
posted @ 2020-01-14 17:06 zjcfrancis 阅读(103) 评论(0) 推荐(0)
摘要:给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。 例如:给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层次遍历结果: [ [3], [9,20], [15,7]] 来源:力扣(LeetCode)链接:htt 阅读全文
posted @ 2020-01-14 04:25 zjcfrancis 阅读(148) 评论(0) 推荐(0)