力扣
可以晚睡但没必要
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
根据字符出现的频率排序
根据字符出现的频率排序题目: 给定一个字符串,请将字符串里的字符按照出现的频率降序排列。示例 1:输入:“tree”输出:“eert”解释:'e’出现两次,'r’和’t’都只出现一次。因此’e’必须出现在’r’和’t’之前。此外,"eetr"也是一个有效的答案。思路:要统计字符出现的频率,因为char型变量可以转化成int型变量,可以用int数组存放字符出现的次数,数组的下标即为字符对应的ASII码利用java中的优先队列,数字大的排在前面遍历队列,取出排在前面的字符串,对应的数原创 2021-01-13 21:43:54 · 269 阅读 · 0 评论 -
字母异位词分组
字母异位词分组题目:给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。示例:输入: [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”]输出:[[“ate”,“eat”,“tea”],[“nat”,“tan”],[“bat”]]思路:字母异位词就是字母相同但顺序不同,将字符串数组中的每个字符的字母进行排序,如果字母相同排序之后顺序也一定相同public List<List<String>> gr原创 2021-01-08 21:50:40 · 137 阅读 · 0 评论 -
反转字符串
反转字符串题目:给定一个字符串 s 和一个整数 k,你需要对从字符串开头算起的每隔 2k 个字符的前 k 个字符进行反转。 如果剩余字符少于 k 个,则将剩余字符全部反转。 如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。思路:直接反转每个2k个字符,每个块以2k为倍数开始,若最后不足2k则进行判断,若最后一块小于k个字符,则从最后一块开头到字符串末尾进行反转,若大于k,则将k个元素反转public String原创 2021-01-06 11:49:56 · 142 阅读 · 0 评论 -
旋转数组
旋转数组描述:给定一个数组,将数组中的元素向右移动 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 · 165 阅读 · 0 评论 -
非递减数列
非递减数列描述:给你一个长度为 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 · 184 阅读 · 0 评论 -
最小移动次数使数组元素相等
最小移动次数使数组元素相等描述:给定一个长度为 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 · 318 阅读 · 0 评论 -
缺失的第一个整数
缺失的第一个整数题目:给你一个未排序的整数数组,请你找出其中没有出现的最小的正整数。思路:遍历数组,将正整数且小于数组长度的数字放到正确索引的位置上如果数字是非正数,则不操作如果数字大于数组的长度也不操作当第一次数组遍历完成后,在进行一次遍历,当数组中的数字不等于对应的正整数时则找到缺失的第一个整数,否则返回数组中最后一个数+1(因为此时数组的元素都是按正确的顺序排列); public int firstMissingPositive(int[] nums) { in原创 2020-12-13 15:32:15 · 98 阅读 · 0 评论 -
最大连续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 · 149 阅读 · 0 评论
分享