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