[LeetCode] 2273. Find Resultant Array After Removing Anagrams

news/2025/10/14 2:34:54/文章来源:https://www.cnblogs.com/cnoodle/p/19139850

You are given a 0-indexed string array words, where words[i] consists of lowercase English letters.

In one operation, select any index i such that 0 < i < words.length and words[i - 1] and words[i] are anagrams, and delete words[i] from words. Keep performing this operation as long as you can select an index that satisfies the conditions.

Return words after performing all operations. It can be shown that selecting the indices for each operation in any arbitrary order will lead to the same result.

An Anagram is a word or phrase formed by rearranging the letters of a different word or phrase using all the original letters exactly once. For example, "dacb" is an anagram of "abdc".

Example 1:
Input: words = ["abba","baba","bbaa","cd","cd"]
Output: ["abba","cd"]
Explanation:
One of the ways we can obtain the resultant array is by using the following operations:

  • Since words[2] = "bbaa" and words[1] = "baba" are anagrams, we choose index 2 and delete words[2].
    Now words = ["abba","baba","cd","cd"].
  • Since words[1] = "baba" and words[0] = "abba" are anagrams, we choose index 1 and delete words[1].
    Now words = ["abba","cd","cd"].
  • Since words[2] = "cd" and words[1] = "cd" are anagrams, we choose index 2 and delete words[2].
    Now words = ["abba","cd"].
    We can no longer perform any operations, so ["abba","cd"] is the final answer.

Example 2:
Input: words = ["a","b","c","d","e"]
Output: ["a","b","c","d","e"]
Explanation:
No two adjacent strings in words are anagrams of each other, so no operations are performed.

Constraints:
1 <= words.length <= 100
1 <= words[i].length <= 10
words[i] consists of lowercase English letters.

移除字母异位词后的结果数组。

给你一个下标从 0 开始的字符串 words ,其中 words[i] 由小写英文字符组成。

在一步操作中,需要选出任一下标 i ,从 words 中 删除 words[i] 。其中下标 i 需要同时满足下述两个条件:

0 < i < words.length
words[i - 1] 和 words[i] 是 字母异位词 。
只要可以选出满足条件的下标,就一直执行这个操作。

在执行所有操作后,返回 words 。可以证明,按任意顺序为每步操作选择下标都会得到相同的结果。

字母异位词 是由重新排列源单词的字母得到的一个新单词,所有源单词中的字母通常恰好只用一次。例如,"dacb" 是 "abdc" 的一个字母异位词。

思路

从左到右遍历 words,维护上一次「保留下来的单词」,记为 prev。当前单词 cur 与 prev 相同则为相邻变位词,跳过;否则加入答案并更新 prev。

复杂度

时间O(n)
空间O(k * klogk) - k是words的长度,klogk是排序的复杂度

代码

Java实现

class Solution {public List<String> removeAnagrams(String[] words) {List<String> res = new ArrayList<>();String prev = ""; // 上一个保留单词的排序签名for (String word : words) {String sorted = helper(word);if (!sorted.equals(prev)) { // 如果不是变位词res.add(word); // 加入原单词prev = sorted; // 更新签名}}return res;}private String helper(String word) {char[] letters = word.toCharArray();Arrays.sort(letters);return new String(letters);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/936560.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

251013

2023 ICPC Macau ICPC Macau 感觉是一套非常困难的题 A 可以发现选择一个 +1 与去除一个 -1 对行列的效果是一样的,所以我们可以先把所有的 -1 选上。之后改变某个数的选择状态都是对对应的行列和加一。接下来就可以贪…

简谈误差与不确定度

唉学物理的怎么都这么坏弄得公式都没搞明白就拿来用了(晚自习闲着没事写的,内容比较 Trivial,大家图一乐就行。 我们主要谈论其中的一些数学直觉上的理解。 1. 随机误差统计规律 由统计规律可知,概率密度函数 \(f(…

可怕!我的Nodejs系统因为日志打印了Error 对象就崩溃了 Node.js System Crashed Because of Logging an Error

@目录报错信息报错截图错误分析场景复现小秘密大揭秘!🔍console.log虽好,但请勿用它来记录PROD错误!日志库的"小烦恼"什么是循环引用?🌀怎样才能让我们的日志系统乖乖听话呢?✨1. 只记录我们需要的…

实践

ans多取合法方案的max/min结果肯定不劣。对于操作“change x y:把a[x]修改为y”,无论是提前continue掉还是循环末尾,一定要记得令a[x]=y!!!模数MOD特殊一定要注意!遇见小模数MOD,可能复杂度与MOD相关。 有可能…

数据结构字符串和图

1.字符串的存储 1.1.字符数组和STLstring char s[N]strlen(s+i):\(O(n)\)。返回从 s[0+i] 开始直到 \0 的字符数。 strcmp(s1,s2):\(O(\min(n_1,n_2))\)。若 s1 字典序更小返回负值,两者一样返回 0,s1 字典序更大返…

字典dict

2025.10.14 1.字典的键值必须是不可变的,也就是说元祖,形如下面的初始化是可以的dict1 = {(1, 2): 1} dict1 = {a: 1} dict1 = {}

结婚证识别技术:融合计算机视觉、深度学习与自然语言处理的综合性AI能力的体现

在数字化浪潮席卷各行各业的今天,如何高效、准确地处理海量纸质证件信息,成为提升政务服务与金融业务效率的关键。结婚证作为证明婚姻关系的核心法律文件,因而,结婚证识别技术应运而生。它不仅是光学字符识别技术的…

上下文丢失

2025.10.14 位置编码外推失效是Transformer模型在长文本推理中出现上下文丢失的最常见架构限制,因为训练时使用的固定位置编码(如正弦编码)无法有效外推至超出训练长度的序列位置,导致位置信息丢失。 残差连接梯度…

数据结构序列

不要从数据结构维护信息的角度来思考问题,而是从问题本身思考需要哪些信息,数据结构只是维护信息的工具!!! 可减信息,如区间和、区间异或和 直接用前缀和实现,复杂度 O(n)+O(1)+O(n)。 可重复贡献信息,如区间最…

上下文学习(In-context Learning, ICL)

2025.10.14 上下文学习(In-context Learning, ICL)的核心机制是在推理阶段不更新模型参数,利用提示中的少量示例引导模型生成适应新任务的输出。也就是在不更新参数的情况下,利用提示中的示例让模型在内部条件化地…

混淆矩阵

2025.10.14 混淆矩阵可以显示模型的所有预测结果,包括真正例、假正例、真负例和假负例,从而帮助分析模型的性能 混淆矩阵不仅仅显示准确率,还提供更详细的分类结果 混淆矩阵与训练损失无关 混淆矩阵不涉及超参数设置…

提示词工程实践指南:从调参到对话的范式转变

写在前面 作为一名长期与代码打交道的工程师,我们习惯了编译器的严格和确定性——相同的输入永远产生相同的输出。但当我们开始使用生成式AI时,会发现这是一个完全不同的世界。最近在系统学习Google的AI课程时,我整理…

泛化能力

2025.10.14 在大型语言模型的工程实践中,提高泛化能力的最常见策略是使用更大的预训练数据集,因为更多数据可以帮助模型学习更泛化的表示,例如GPT-3和BERT等模型都强调大规模数据集的应用。

JVM引入

虚拟机与 JVM 虚拟机(Virtual Machine),就是一台虚拟的计算机。它是一款软件,用来执行一系列的虚拟计算机指令。 虚拟机可以分为系统虚拟机和程序虚拟机:Visual Box、VMware 就属于系统虚拟机,它们完全是对物理计…

shiro 架构

一、subject(当前用户信息) 二、SecurityManager(所有用户管理) 三、Realm(数据连接)

[音视频][HLS] HLS_downloader

[音视频][HLS] HLS_downloader$(".postTitle2").removeClass("postTitle2").addClass("singleposttitle");01 简介 1.1 功能: 一个简单的HLS下载器,使用go语言实现 1.2 执行方式 如果…

Python-weakref技术指南

Python weakref 模块是 Python 标准库中用于处理对象弱引用的重要工具。它允许程序员创建对对象的弱引用,这种引用不会增加对象的引用计数,从而不影响对象的垃圾回收过程。本报告将全面介绍 weakref 模块的概念、工作…

从众多知识汲取一星半点也能受益匪浅【day11(2025.10.13)】

Enjoy 基于代码思考问题 先理清楚代码是否用上了文档所定义的api

王爽《汇编语言》第四章 笔记

4.2 源程序 4.2.1 伪指令在汇编语言的源程序中包含两种指令:汇编指令、伪指令。 (1)汇编指令:有对应机器码的指令,可以被编译为机器指令,最终被CPU所执行。 (2)伪指令:没有对应的机器指令,最终不被CPU所执行…