IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 算法题今日总结(20210801) -> 正文阅读

[数据结构与算法]算法题今日总结(20210801)

目录

1. 变位词组

2. 两数相加

3. 无重复字符的最长子串


1. 变位词组

对字符串数组进行排序,将所有变位词组合在一起。变位词是指字母相同,但排列不同的字符串。

例子:

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

解题方法:

1. 遍历输入集,记录每个字符串中每个字符及出现的次数作为hash表的key

2. 对每个字符串按字符排序,相同的字符归为一组

大神优秀题解法:

 public List<List<String>> groupAnagrams(String[] strs) {
        return new ArrayList<>(Arrays.stream(strs)
                .collect(Collectors.groupingBy(s -> s.chars()
                        .sorted().mapToObj(t -> String.valueOf((char) t))
                        .reduce(String::concat)))
                .values());
    }

流式处理:先把入参转List, 字符排序然后相同的归一组

额外了解到的map方法:

List<String> tempList = map.getOrDefault(key, new ArrayList<String>();

一行代码可以减少判断

2. 两数相加

两个?非空 的链表,表示两个非负的整数。它们每位数字都是按照?逆序?的方式存储的,并且每个节点只能存储?一位?数字。请你将两个数相加,并以相同形式返回一个表示和的链表。

输入:l1 = [2,4,3], l2 = [5,6,4]
输出:[7,0,8]
解释:342 + 465 = 807.

解题方法:

1.? 遍历两链表,依次相加

踩坑:

1. 将链表数据转换为long,然后数值相加,测试数据超出long类型的最大值,计算结果错误

2. 最后一位相加时,进位1为做处理。

3. 无重复字符的最长子串

找出其中不含有重复字符的?最长子串?的长度。

输入: s = "abcabcbb"
输出: 3 
解释: 因为无重复字符的最长子串是 “abc”, 所以输出3

解题方法:

1. 遍历字符,记录每个字符及下标,当重复出现时,遍历指针跳到此字符下标的地方,记录此子串的长度,后续子串长度大于此子串,则覆盖返回结果

2. 左右指针,左指针依次递增,左指针每移动一次,右指针移动直到出现重复字符,此时左指针和右指针之间的字符为不包含重复的子串,每次记录最大长度。

今日小结:

1. 做题是总是想的太简单,基本都是暴力解法

2. 特殊情况,边界值的考虑不到位

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-08-02 20:51:01  更:2021-08-02 20:51:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/13 14:38:00-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码