leetcode java_Leetcode JAVA实现

[leetcode1. 2 Sum](1.%20Two%20Sum.md)

[leetcode2. Add Two Numbers](leetcode2.AddTwoNumbers.md)

[leetcode7. Reverse Integer](leetcode7.%20Reverse%20Integer.md)

[leetcode8. String to Integer (atoi)](leetcode8.%20String%20to%20Integer%20(atoi).md)

[leetcode12. Integer to Roman](leetcode12.%20Integer%20to%20Roman.md)

[leetcode13. Roman to Integer](leetcode13.%20Roman%20to%20Integer.md)

[ leetcode15. 3Sum](leetcode15.%203Sum.md)

[leetcode18. 4Sum](leetcode18.%204Sum.md)

[leetcode20. Valid Parentheses](leetcode20.ValidParentheses.md)

[leetcode26. Remove Duplicates from Sorted Array](leetcode26.%20Remove%20Duplicates%20from%20Sorted%20Array.md)

[leetcode27. Remove Element](leetcode27.%20Remove%20Element.md)

[leetcode58. Length of Last Word](leetcode58.%20Length%20of%20Last%20Word.md)

[leetcode66. Plus One](leetcode66.%20Plus%20One.md)

[leetcode67. Add Binary](leetcode67.%20Add%20Binary.md)

[leetcode80. Remove Duplicates from Sorted Array II](leetcode80.%20Remove%20Duplicates%20from%20Sorted%20Array%20II.md)

[leetcode 88. Merge Sorted Array](leetcode%2088.%20Merge%20Sorted%20Array.md)

[leetcode101. Symmetric Tree](leetcode101.%20Symmetric%20Tree.md)

[leetcode104. Maximum Depth of Binary Tree](leetcode104.%20Maximum%20Depth%20of%20Binary%20Tree.md)

[leetcode110. Balanced Binary Tree](leetcode110.%20Balanced%20Binary%20Tree.md)

[leetcode118. Pascal's Triangle](leetcode118.%20Pascal's%20Triangle.md)

[leetcode119. Pascal's Triangle II](leetcode119.%20Pascal's%20Triangle%20II.md)

[leetcode121. Best Time to Buy and Sell Stock](leetcode121.%20Best%20Time%20to%20Buy%20and%20Sell%20Stock.md)

[leetcode125. Valid Palindrome](leetcode125.%20Valid%20Palindrome.md)

[leetcode136. Single Number](leetcode136.%20Single%20Number.md)

[leetcode144. Binary Tree Preorder Traversal](leetcode144.%20Binary%20Tree%20Preorder%20Traversal.md)

[leetcode145. Binary Tree Postorder Traversal](leetcode145.%20Binary%20Tree%20Postorder%20Traversal.md)

[leetcode155. Min Stack](leetcode155.%20Min%20Stack.md)

[leetcode169. Majority Element](leetcode169.%20Majority%20Element.md)

[leetcode171. Excel Sheet Column Number](leetcode171-Excel%20Sheet%20Column%20Number.md)

[leetcode172. Factorial Trailing Zeroes](leetcode172.%20Factorial%20Trailing%20Zeroes.md)

[leetcode189. Rotate Array](leetcode189.%20Rotate%20Array.md)

[leetcode191. Number of 1 Bits](leetcode191.%20Number%20of%201%20Bits.md)

[leetcode202. Happy Number](leetcode202.%20Happy%20Number.md)

[leetcode203. Remove Linked List Elements](leetcode3.md)

[leetcode204. Count Primes](leetcode204.%20Count%20Primes.md)

[leetcode225. Implement Stack using Queues](leetcode225.%20Implement%20Stack%20using%20Queues.md)

[leetcode226. Invert Binary Tree](leetcode226.%20Invert%20Binary%20Tree.md)

[leetcode231. Power of Two](leetcode231.%20Power%20of%20Two.md)

[leetcode232. Implement Queue using Stacks](leetcode232.%20Implement%20Queue%20using%20Stacks.md)

[ leetcode234. Palindrome Linked List](leetcode234.%20Palindrome%20Linked%20List.md)

[leetcode237. Delete Node in a Linked List](leetcode237.%20Delete%20Node%20in%20a%20Linked%20List.md)

[leetcode242. Valid Anagram](leetcode242.md)

[leetcode258. Add Digits](leetcode258.%20Add%20Digits.md)

[leetcode263. Ugly Number](leetcode263.%20Ugly%20Number.md)

[leetcode283. Move Zeroes](leetcode283.%20Move%20Zeroes.md)

[leetcode292. Nim Game](leetcode292.%20Nim%20Game.md)

[leetcode344. Reverse String](leetcode344.%20Reverse%20String.md)

[leetcode371. Sum of Two Integers](leetcode371.%20Sum%20of%20Two%20Integers.md)

[leetcode804. Unique Morse Code Words](leetcode20.md)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 二分法 5 1.1. 什么是二分查找 5 1.2. 如何识别二分法 5 1.3. 二分法模板 6 1.3.1. 模板一 6 1.3.1.1. 模板代码 6 1.3.1.2. 关键属性 7 1.3.1.3. 语法说明 7 1.3.1.4. Lc69:x的平方根 8 1.3.1.5. Lc374:猜数大小 9 1.3.1.6. Lc33:搜索旋转数组 11 1.3.2. 模板二 13 1.3.2.1. 模板代码 13 1.3.2.2. 关键属性 14 1.3.2.3. 语法说明 14 1.3.2.4. Lc278:第一个错误版本 14 1.3.2.5. Lc162:寻找峰值 16 1.3.2.6. Lc153:寻找旋转排序数组最小值 19 1.3.2.7. Lc154:寻找旋转排序数组最小值II 20 1.3.3. 模板三 22 1.3.3.1. 模板代码 22 1.3.3.2. 关键属性 23 1.3.3.3. 语法说明 23 1.3.3.4. LC-34:在排序数组中查找元素的第一个和最后一个 23 1.3.3.5. LC-658:找到K个最接近的元素 25 1.3.4. 小结 28 1.4. LeetCode中二分查找题目 29 2. 双指针 30 2.1. 快慢指针 31 2.1.1. 什么是快慢指针 31 2.1.2. 快慢指针模板 31 2.1.3. 快慢指针相关题目 32 2.1.3.1. LC-141:链表是否有环 32 2.1.3.2. LC-142:环形链表入口 34 2.1.3.3. LC-876:链表的中间节点 37 2.1.3.4. LC-287:寻找重复数 40 2.2. 滑动窗口 43 2.2.1. 什么是滑动窗口 43 2.1.4. 常见题型 44 2.1.5. 注意事项 45 2.1.6. 滑动窗口模板 45 2.1.7. 滑动窗口相关题目 46 2.1.7.1. LC-3:无重复字符的最长子串 47 2.1.7.2. LC-76:最小覆盖子串 49 2.1.7.3. LC-209:长度最小的子数组 54 2.1.7.4. LC-239:滑动窗口最大值 57 2.1.7.5. LC-395:至少有K个重复字符的最长子串 60 2.1.7.6. LC-567:字符串排列 62 2.1.7.7. LC-904:水果成篮 64 2.1.7.8. LC-424:替换后的最长重复字符 66 2.1.7.9. LC-713:乘积小于K的子数组 67 2.1.7.10. LC-992:K个不同整数的子数组 70 2.3. 左右指针 73 2.3.1. 模板 73 2.3.2. 相关题目 73 2.3.2.1. LC-76:删除倒数第N个节点 74 2.3.2.2. LC-61:旋转链表 76 2.3.2.3. LC-80:删除有序数组中的重复项 79 2.3.2.4. LC-86:分割链表 80 2.3.2.5. LC-438:找到字符串中所有字母的异位词 82 3. 模板 85 2.3.2.6. LC-76:删除倒数第N个节点 85
题目描述: 给定一个字符串,请将字符串里的字符按照出现的频率降序排列。 示例 1: 输入: "tree" 输出: "eert" 解释: 'e'出现两次,'r'和't'都只出现一次。因此'e'必须出现在'r'和't'之前。此外,"eetr"也是一个有效的答案。 示例 2: 输入: "cccaaa" 输出: "cccaaa" 解释: 'c'和'a'都出现三次。此外,"aaaccc"也是有效的答案。注意"cacaca"是不正确的,因为相同的字母必须放在一起。 示例 3: 输入: "Aabb" 输出: "bbAa" 解释: 此外,"bbaA"也是一个有效的答案,但"Aabb"是不正确的。注意'A'和'a'被认为是两种不同的字符。 Java代码如下: ``` import java.util.*; public class Solution { public String frequencySort(String s) { if (s == null || s.length() == 0) { return ""; } Map<Character, Integer> map = new HashMap<>(); for (int i = 0; i < s.length(); i++) { char c = s.charAt(i); map.put(c, map.getOrDefault(c, 0) + 1); } List<Map.Entry<Character, Integer>> list = new ArrayList<>(map.entrySet()); Collections.sort(list, (o1, o2) -> o2.getValue() - o1.getValue()); StringBuilder sb = new StringBuilder(); for (Map.Entry<Character, Integer> entry : list) { char c = entry.getKey(); int count = entry.getValue(); for (int i = 0; i < count; i++) { sb.append(c); } } return sb.toString(); } } ``` 解题思路: 首先遍历字符串,使用HashMap记录每个字符出现的次数。然后将HashMap转换为List,并按照出现次数从大到小进行排序。最后遍历排序后的List,将每个字符按照出现次数依次添加到StringBuilder中,并返回StringBuilder的字符串形式。 时间复杂度:O(nlogn),其中n为字符串s的长度。遍历字符串的时间复杂度为O(n),HashMap和List的操作时间复杂度均为O(n),排序时间复杂度为O(nlogn),StringBuilder操作时间复杂度为O(n)。因此总时间复杂度为O(nlogn)。 空间复杂度:O(n),其中n为字符串s的长度。HashMap和List的空间复杂度均为O(n),StringBuilder的空间复杂度也为O(n)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值