自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(10)
  • 收藏
  • 关注

原创 根据字符出现的频率排序

根据字符出现的频率排序题目: 给定一个字符串,请将字符串里的字符按照出现的频率降序排列。示例 1:输入:“tree”输出:“eert”解释:'e’出现两次,'r’和’t’都只出现一次。因此’e’必须出现在’r’和’t’之前。此外,"eetr"也是一个有效的答案。思路:要统计字符出现的频率,因为char型变量可以转化成int型变量,可以用int数组存放字符出现的次数,数组的下标即为字符对应的ASII码利用java中的优先队列,数字大的排在前面遍历队列,取出排在前面的字符串,对应的数

2021-01-13 21:43:54 202

原创 字母异位词分组

字母异位词分组题目:给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。示例:输入: [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”]输出:[[“ate”,“eat”,“tea”],[“nat”,“tan”],[“bat”]]思路:字母异位词就是字母相同但顺序不同,将字符串数组中的每个字符的字母进行排序,如果字母相同排序之后顺序也一定相同public List<List<String>> gr

2021-01-08 21:50:40 75

原创 反转字符串

反转字符串题目:给定一个字符串 s 和一个整数 k,你需要对从字符串开头算起的每隔 2k 个字符的前 k 个字符进行反转。​ 如果剩余字符少于 k 个,则将剩余字符全部反转。​ 如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。思路:直接反转每个2k个字符,每个块以2k为倍数开始,若最后不足2k则进行判断,若最后一块小于k个字符,则从最后一块开头到字符串末尾进行反转,若大于k,则将k个元素反转public String

2021-01-06 11:49:56 79

原创 旋转数组

旋转数组描述:给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。输入: [1,2,3,4,5,6,7] 和 k = 3输出: [5,6,7,1,2,3,4]解释:向右旋转 1 步: [7,1,2,3,4,5,6]向右旋转 2 步: [6,7,1,2,3,4,5]向右旋转 3 步: [5,6,7,1,2,3,4]思路一:暴力法,旋转k次,每次将数组旋转一个元素 public void rotate(int[] nums, int k){ int temp ,p

2020-12-28 21:44:57 105

原创 非递减数列

非递减数列描述:给你一个长度为 n 的整数数组,请你判断在 最多 改变 1 个元素的情况下,该数组能否变成一个非递减数列。我们是这样定义一个非递减数列的: 对于数组中所有的 i (0 <= i <= n-2),总满足 nums[i] <= nums[i + 1]思路当数组长度小于3时,一定可以使改变一个元素让数组变成一个非递减数列当长度大于3时,每当出现前一个元素大于后一个元素,就count++,如果count大于1返回false若y的前元素x不存在时,使y=z即可若存

2020-12-16 11:32:52 114

原创 最小移动次数使数组元素相等

最小移动次数使数组元素相等描述:给定一个长度为 n 的非空整数数组,找到让数组所有元素相等的最小移动次数。每次移动将会使 n - 1 个元素增加 1。示例:输入:[1,2,3]输出:3解释:只需要3次移动(注意每次移动会增加两个元素的值):[1,2,3] => [2,3,3] => [3,4,3] => [4,4,4]思路:先将数组进行排序,然后遍历数组,每次取得最大值与最小值之差,除最后一个元素外其余元素都加差值,所以第一个元素与最后一个元素相等,而

2020-12-14 21:24:07 220

原创 缺失的第一个整数

缺失的第一个整数题目:给你一个未排序的整数数组,请你找出其中没有出现的最小的正整数。思路:遍历数组,将正整数且小于数组长度的数字放到正确索引的位置上如果数字是非正数,则不操作如果数字大于数组的长度也不操作当第一次数组遍历完成后,在进行一次遍历,当数组中的数字不等于对应的正整数时则找到缺失的第一个整数,否则返回数组中最后一个数+1(因为此时数组的元素都是按正确的顺序排列); public int firstMissingPositive(int[] nums) { in

2020-12-13 15:32:15 52

原创 错误的集合

错误的集合题目描述:集合 S 包含从1到 n 的整数。不幸的是,因为数据错误,导致集合里面某一个元素复制了成了集合里面的另外一个元素的值,导致集合丢失了一个整数并且有一个元素重复。给定一个数组 nums 代表了集合 S 发生错误后的结果。你的任务是首先寻找到重复出现的整数,再找到丢失的整数,将它们以数组的形式返回思路:遍历原数组,因为数组中的元素内容为1-n,所以将元素值-1作为索引,每次加一,当新数组中出现了值为2时,则代表出现重复的元素,再次从0开始遍历到nums的长度,如果新数组中出现以i为索

2020-12-10 21:26:56 43

原创 三个数的最大乘积

三个数的最大乘积给定一个整型数组,在数组中找出由三个数组成的最大乘积,并输出这个乘积。思路若数组中全为正数则选三个最大数相乘若数组中全为负数,选最大三个数相乘若三个数中有两个正数,选最大三个数若只有一个正数,则选最小的两个数,和一个正数 public int maximumProduct(int[] nums) { int min1 = Integer.MAX_VALUE, min2 = Integer.MAX_VALUE; int max1 = Inte

2020-12-09 11:28:33 238

原创 最大连续1的个数

最大连续1的个数 题目:给定一个二进制数组, 计算其中最大连续1的个数。解法一:遍历数组,记录连续1的个数,比较每次最大个数 public int findMaxConsecutiveOnes(int[] nums){ int count = 0; int res = 0; for(int num : nums){ if(num == 1){ count++; }else{ res

2020-12-08 22:18:40 97

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除