当前位置: 首页 > wzjs >正文

用shopify 做网站google下载手机版

用shopify 做网站,google下载手机版,深圳建设集团是国企吗,佐力药业股票49. 字母异位词分组 题目描述 给定一个字符串数组,要求将字母异位词组合在一起。可以按任意顺序返回结果列表。 字母异位词是由重新排列源单词的所有字母得到的一个新单词。 示例 示例 1: 输入: strs ["eat", "tea", "tan", &…

在这里插入图片描述

49. 字母异位词分组

题目描述

给定一个字符串数组,要求将字母异位词组合在一起。可以按任意顺序返回结果列表。

字母异位词是由重新排列源单词的所有字母得到的一个新单词。

示例

示例 1:

输入: strs = ["eat", "tea", "tan", "ate", "nat", "bat"]
输出: [["bat"],["nat","tan"],["ate","eat","tea"]]

示例 2:

输入: strs = [""]
输出: [[""]]

示例 3:

输入: strs = ["a"]
输出: [["a"]]

提示

  • 1 <= strs.length <= 10^4
  • 0 <= strs[i].length <= 100
  • strs[i] 仅包含小写字母

题解

class Solution {public List<List<String>> groupAnagrams(String[] strs) {// 创建一个哈希表,键是排序后的字符串,值是对应的原始字符串列表Map<String, List<String>> map = new HashMap<String, List<String>>();// 遍历输入字符串数组中的每个字符串for (String str : strs) {// 将当前字符串转换为字符数组,以便排序char[] array = str.toCharArray();// 对字符数组进行排序,这样所有字母异位词排序后都会得到相同的字符串Arrays.sort(array);// 将排序后的字符数组转换回字符串,作为哈希表的键String key = new String(array);// 获取当前键对应的列表,如果不存在则创建一个新列表List<String> list = map.getOrDefault(key, new ArrayList<String>());// 将当前原始字符串添加到对应的列表中list.add(str);// 将更新后的列表放回哈希表map.put(key, list);}// 将哈希表中的所有值(即分组后的列表)转换为一个新的ArrayList并返回return new ArrayList<List<String>>(map.values());}
}

解题思路

  1. 哈希表的使用:创建一个哈希表来存储分组结果,键是排序后的字符串,值是对应的原始字符串列表。这样可以利用哈希表O(1)的查找特性高效分组。

  2. 字符串排序:对每个字符串进行字符排序,确保所有字母异位词经过排序后都会得到相同的字符串表示。这个排序后的字符串将作为哈希表的键。

  3. 分组存储

    • 对于每个字符串,先排序得到键
    • 检查哈希表中是否已存在该键对应的列表
    • 若不存在则新建一个空列表
    • 将原始字符串添加到对应的列表中
  4. 结果收集:遍历完成后,哈希表中存储的就是分组好的字母异位词,直接返回哈希表的所有值即可。

128. 最长连续序列

题目描述

给定一个未排序的整数数组 nums,找出数字连续的最长序列的长度(不要求序列元素在原数组中连续)。

要求设计并实现时间复杂度为 O(n) 的算法。

示例

示例 1:

输入:nums = [100,4,200,1,3,2]
输出:4
解释:最长数字连续序列是 [1, 2, 3, 4]。它的长度为 4。

示例 2:

输入:nums = [0,3,7,2,5,8,4,6,0,1]
输出:9
解释:最长数字连续序列是 [0, 1, 2, 3, 4, 5, 6, 7, 8]。它的长度为 9。

示例 3:

输入:nums = [1,0,1,2]
输出:3
解释:最长数字连续序列是 [0, 1, 2]。它的长度为 3。

提示

  • 0 <= nums.length <= 10^5
  • -10^9 <= nums[i] <= 10^9

题解

class Solution {public int longestConsecutive(int[] nums) {// 创建一个HashSet来存储所有数字,HashSet提供O(1)时间复杂度的查找Set<Integer> numSet = new HashSet<>();// 遍历输入数组,将所有数字添加到HashSet中for (int num : nums) {numSet.add(num);}// 初始化最长连续序列长度为0int longestStreak = 0;// 遍历HashSet中的每个数字for (int num : numSet) {// 只有当当前数字的前一个数字(num-1)不在集合中时,// 才将其视为一个连续序列的起点if (!numSet.contains(num - 1)) {// 初始化当前数字和当前连续序列长度int currentNum = num;int currentStreak = 1;// 向后查找连续的数字(currentNum+1)// 如果存在就继续向后查找,并增加当前序列长度while (numSet.contains(currentNum + 1)) {currentNum += 1;currentStreak += 1;}// 比较并更新最长连续序列长度longestStreak = Math.max(longestStreak, currentStreak);}}// 返回找到的最长连续序列长度return longestStreak;}
}

解题思路

  1. 使用哈希集合:将所有数字存入HashSet,这样可以在O(1)时间内判断某个数字是否存在。

  2. 寻找序列起点:对于每个数字,只有当它的前一个数字(num-1)不存在时,才把它视为某个连续序列的起点。

  3. 扩展序列:从起点开始,向后查找连续的数字(currentNum+1),计算当前连续序列的长度。

  4. 更新最大值:在遍历过程中,始终保持记录遇到的最长序列长度。

http://www.dtcms.com/wzjs/134826.html

相关文章:

  • 万网域名指向网站宁波seo托管公司
  • 帝国cms 商城网站视频教程新网站seo外包
  • 如何找做网站的客户优化网站建设
  • 俱乐部网站模板app线下推广怎么做
  • 枣庄网站建设 网站设计 网站制作正规网站优化哪个公司好
  • 网站建设制作哪家好百度一下官网网址
  • 手机怎么做自己的网站西安市网站
  • 湖南移动网站建设益阳网络推广
  • 企业商务网站设计与开发百度指数的数据来源
  • 哪家网站建设搜索引擎营销的特点有
  • 网站开发api平台发布软文
  • 做万词霸屏后网站关键词没有排名厦门网站快速排名优化
  • 重庆奉节网站建设公司推荐谷歌浏览器 官网下载
  • 哪个网站网页做的好看在百度上怎么打广告
  • 做租人网站犯法吗百度自然排名优化
  • 提供信息门户网站制作全球十大搜索引擎排名
  • 网站推广排名教程汕头seo关键词排名
  • b站推广入口mba智库在线观看今天刚刚发生的新闻最新新闻
  • wordpress多站点开启属于b2b的网站有哪些
  • 切片工具做网站怎么做谷歌seo网站建设
  • html5手机版seo优化服务
  • 网站建设_你真的懂吗?制作网页一般多少钱
  • 某服装公司网站建设论文抖音推广佣金平台
  • 贵阳做网站多少钱促销方案
  • 网站建设项目的工作分解ciliba磁力搜索引擎
  • 安乡网站制作软考培训机构哪家好一点
  • 网站后台上传模板网络营销的含义
  • 网站重要组成部分竞价推广价格
  • 怎么用自己的网站做邮箱小学生简短小新闻
  • 网站建设书案例疫情最新数据消息地图