数据结构专栏---数组篇
文章平均质量分 65
我们将所有关于数组的题目放到了此专栏
努力彪
但行好事,莫问前程
展开
-
旋转数组的最小数字(简单难度)
目录题目概述(简单难度)思路与代码思路展现代码示例注意事项题目概述(简单难度)题目链接:点我进入leetcode思路与代码思路展现使用经典二分法,题解直接看此链接即可:点我进入链接代码示例注意此处我们将代码进行了改动,并附上改动原因public class Solution { // [3, 4, 5, 1, 2] // [1, 2, 3, 4, 5] // 不能使用左边数与中间数比较,这种做法不能有效地减治 // [1, 2, 3, 4, 5]原创 2022-02-28 15:57:31 · 302 阅读 · 0 评论 -
数组中数字出现的次数(中等难度)
目录题目概述(中等难度)思路与代码思路展现代码示例题目概述(中等难度)题目链接:点我进入leetcode思路与代码思路展现首先这道题目用到了原码,反码,补码的知识,有需要的小伙伴来看下这篇博客温习一下:点我进入博客题解可以看这个:点我进入题解那么先来看代码,然后我再对题解做一下补充代码示例class Solution { public int[] singleNumbers(int[] nums) { int bitmask = 0; //把数组中的所有元素全原创 2022-02-20 18:17:47 · 445 阅读 · 0 评论 -
二维数组中的查找(中等难度)
目录题目概述(简单难度)思路与代码思路展现方法1 暴力法代码示例方法2 标志数代码示例题目概述(简单难度)题目链接:二维数组中的查找思路与代码思路展现方法1 暴力法如果不考虑二维数组排好序的特点,则直接遍历整个二维数组的每一个元素,判断目标值是否在二维数组中存在。依次遍历二维数组的每一行和每一列。如果找到一个元素等于目标值,则返回 true。如果遍历完毕仍未找到等于目标值的元素,则返回 false。代码示例class Solution { public boolean find原创 2022-02-03 20:06:41 · 253 阅读 · 0 评论 -
数组中数字出现的次数 II(简单难度)
目录题目概述(简单难度)思路与代码思路1(遍历数组法)代码示例思想2(哈希)总结题目概述(简单难度)在一个数组 nums 中除一个数字只出现一次之外,其他数字都出现了三次。请找出那个只出现一次的数字。示例 1:输入:nums = [3,4,3,3]输出:4示例 2:输入:nums = [9,1,7,9,7,9,7]输出:1题目链接:点我进入leetcode思路与代码思路1(遍历数组法)我的思路是先对数组进行排序后在遍历,使用一个计数器来寻找我们只出现过一次的数字.代码示例c原创 2021-10-09 10:48:52 · 213 阅读 · 22 评论 -
将数组分成和相等的三个部分(简单难度)
目录题目概述(简单难度)思路与代码思路展现代码示例总结题目概述(简单难度)给你一个整数数组 arr,只有可以将其划分为三个和相等的 非空 部分时才返回 true,否则返回 false。形式上,如果可以找出索引 i + 1 < j 且满足 (arr[0] + arr[1] + ... + arr[i] == arr[i + 1] + arr[i + 2] + ... + arr[j - 1] == arr[j] + arr[j + 1] + ... + arr[arr.length - 1]) 就原创 2021-09-30 15:35:24 · 1515 阅读 · 0 评论 -
旋转数组的最小数字(简单难度)
目录题目概述(简单难度)思路与代码思路展现代码示例总结题目概述(简单难度)把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1。示例 1:输入:[3,4,5,1,2]输出:1示例 2:输入:[2,2,2,0,1]输出:0附上leetcode链接:点击此处进入leetcode思路与代码思路展现代码示例总结1:原创 2021-08-22 00:34:42 · 81 阅读 · 0 评论 -
调整数组顺序使奇数位于偶数前面(简单难度)
目录题目概述(简单难度)思路与代码思路展现代码示例总结题目概述(简单难度)输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。示例:输入:nums = [1,2,3,4]输出:[1,3,2,4]注:[3,1,2,4] 也是正确的答案之一。附上leetcode链接:点我进入leetcode思路与代码思路展现此题目我们是将数组中的奇数放在前,偶数放在后,对此我们可以使用首尾双指针法首尾指针法的思路如下:1:定义一个le原创 2021-08-21 11:46:13 · 143 阅读 · 0 评论 -
数组中重复的数字(简单难度)
目录题目概述(简单难度)思路与代码思路展现代码示例总结题目概述(简单难度)找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例 1:输入: [2, 3, 1, 0, 2, 5, 3]输出:2 或 3附上leetcode链接:点击此处进入leetcode思路与代码思路展现代码示例总结1:此算法时间复杂度O(N)空间复杂原创 2021-08-20 16:41:01 · 124 阅读 · 0 评论 -
数组中出现次数超过一半的数字(简单难度)
目录题目概述(简单难度)思路与代码思路展现思路1(排序法)代码示例思路2(摩尔投票法,最优解)代码示例总结题目概述(简单难度)数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例 1:输入: [1, 2, 3, 2, 2, 2, 5, 4, 2]输出: 2附上leetcode链接:点击此处进入链接思路与代码思路展现思路1(排序法)排序法的思想其实非常简单,一个数组中出现次数最多的数字经过排序后,这个数组最中间的原创 2021-08-16 17:57:41 · 151 阅读 · 0 评论 -
和为s的两个数字(简单难度)
目录包继承多态包包 (package) 是组织类的一种方式. 使用包的主要目的是保证类的唯一性.例如, 你在代码中写了一个 Test 类. 然后你的同事也可能写一个 Test 类. 如果在一个包下出现两个同名的类, 就会冲突, 导致代码不能编译通过.如下图所示:可以看到图中的两个类的名称虽然相同,但是并没有报错,原因是第一个TestDemo类的路径为com.baidu.www.TestDemo,第二个TestDemo类的路径为src.TestDemo,路径不相同,所以重名也不会报错.如下图原创 2021-08-16 16:12:24 · 123 阅读 · 0 评论