
LeetCode
常见算法题
zsxfa
这个作者很懒,什么都没留下…
展开
-
剑指 Offer 39. 数组中出现次数超过一半的数字
数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例 1:输入: [1, 2, 3, 2, 2, 2, 5, 4, 2]输出: 2限制:1 <= 数组长度 <= 50000本题常见的三种解法:哈希表统计法: 遍历数组 nums ,用 HashMap 统计各数字的数量,即可找出众数 。此方法时间和空间复杂度均为 O(N)。数组排序法: 将数组 nums 排序,数组中点的元素 一定为众数。此方法时间和空间原创 2021-04-11 18:05:55 · 135 阅读 · 0 评论 -
1636. 按照频率将数组升序排序[JAVA]
题目描述:给你一个整数数组 nums ,请你将数组按照每个值的频率 升序 排序。如果有多个值的频率相同,请你按照数值本身将它们 降序 排序。请你返回排序后的数组。示例 1:输入:nums = [1,1,2,2,2,3]输出:[3,1,1,2,2,2]解释:‘3’ 频率为 1,‘1’ 频率为 2,‘2’ 频率为 3 。示例 2:输入:nums = [2,3,1,3,2]输出:[1,3,3,2,2]解释:‘2’ 和 ‘3’ 频率都为 2 ,所以它们之间按照数值本身降序排序。示例原创 2021-01-16 14:01:09 · 282 阅读 · 0 评论 -
1122. 数组的相对排序 [JAVA]
给你两个数组,arr1 和 arr2,arr2 中的元素各不相同arr2 中的每个元素都出现在 arr1 中对 arr1 中的元素进行排序,使 arr1 中项的相对顺序和 arr2 中的相对顺序相同。未在 arr2 中出现过的元素需要按照升序放在 arr1 的末尾。示例:输入:arr1 = [2,3,1,3,2,4,6,7,9,2,19], arr2 = [2,1,4,3,9,6]输出:[2,2,2,1,4,3,3,9,6,7,19]提示:1 <= arr1.length, ar原创 2021-01-08 22:35:47 · 279 阅读 · 0 评论 -
922. 按奇偶排序数组 II[JAVA]
给定一个非负整数数组 A, A 中一半整数是奇数,一半整数是偶数。对数组进行排序,以便当 A[i] 为奇数时,i 也是奇数;当 A[i] 为偶数时, i 也是偶数。你可以返回任何满足上述条件的数组作为答案。示例:输入:[4,2,5,7]输出:[4,5,2,7]解释:[4,7,2,5],[2,5,4,7],[2,7,4,5] 也会被接受。提示:2 <= A.length <= 20000A.length % 2 == 00 <= A[i] <= 1000思原创 2021-01-05 21:50:53 · 108 阅读 · 0 评论 -
350. 两个数组的交集 II[JAVA]
给定两个数组,编写一个函数来计算它们的交集。示例 1:输入:nums1 = [1,2,2,1], nums2 = [2,2]输出:[2,2]示例 2:输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出:[4,9]说明:输出结果中每个元素出现的次数,应与元素在两个数组中出现次数的最小值一致。我们可以不考虑输出结果的顺序。方法一:哈希表由于同一个数字在两个数组中都可能出现多次,因此需要用哈希表存储每个数字出现的次数。对于一个数字,其在交集中出现的次数原创 2021-01-04 21:56:31 · 210 阅读 · 0 评论 -
349. 两个数组的交集[JAVA]
给定两个数组,编写一个函数来计算它们的交集示例 1:输入:nums1 = [1,2,2,1], nums2 = [2,2]输出:[2]示例 2:输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出:[9,4]说明:输出结果中的每个元素一定是唯一的。我们可以不考虑输出结果的顺序。方式1:两个集合如果使用哈希集合存储元素,则可以在 O(1)O(1) 的时间内判断一个元素是否在集合中,从而降低时间复杂度。首先使用两个集合分别存储两个数组中的元素,然后遍原创 2021-01-03 22:54:35 · 403 阅读 · 0 评论 -
LeetCode 136 137 260 剑指Offer56-II 只出现一次的数字(位运算)
137. 只出现一次的数字 II说明:给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现了三次。找出那个只出现了一次的元素。示例 1:输入: [2,2,3,2]输出: 3示例 2:输入: [0,1,0,1,0,1,99]输出: 99思路:题目规定除了某个元素出现了一次外,其余每个元素都出现了三次,所以我们使用位运算的时候应该使用两个元素来记录状态的转化首先使用了两个变量Once与Twice,表示碰到相同元素的次数,第一次碰到一个元素,将它赋给Once,第二次遇到这个原创 2020-07-30 22:23:02 · 271 阅读 · 0 评论 -
LeetCode 88.合并两个有序数组
题目:给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。说明: 初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。 你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。示例:输入:nums1 = [1,2,3,0,0,0], m = 3nums2 = [2,5,6], n = 3输出: [1,2,2,3,5,6]代码原创 2020-07-26 11:16:39 · 113 阅读 · 0 评论