LeetCode 760. 找出变位映射

本文介绍了解决LeetCode760找出变位映射问题的方法。通过使用哈希表来记录列表B中每个元素的位置,进而快速找到列表A中每个元素在列表B中的对应位置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

LeetCode 760. 找出变位映射

题目描述

给定两个列表 Aand B,并且 B 是 A 的变位(即 B 是由 A 中的元素随机排列后组成的新列表)。
我们希望找出一个从 A 到 B 的索引映射 P 。一个映射 P[i] = j 指的是列表 A 中的第 i 个元素出现于列表 B 中的第 j 个元素上。列表 A 和 B 可能出现重复元素。如果有多于一种答案,输出任意一种。
  例如,给定
  A = [12, 28, 46, 32, 50]
  B = [50, 12, 32, 46, 28]

LeetCode 760. 找出变位映射
提示:

    A, B 有相同的长度,范围为 [1, 100]。
    A[i], B[i] 都是范围在 [0, 10^5] 的整数。

一、解题关键词


二、解题报告

1.思路分析

2.时间复杂度

3.代码示例

class Solution {
    //元素可能重复 元素的值 对应的下标 是否和新数组的下标相同

    public int[] anagramMappings(int[] nums1, int[] nums2) {
        int len1 = nums1.length;
        int len2 = nums2.length;

        Map<Integer,Integer> map = new HashMap<>();
        for(int i =0;i < len2;++i){
            map.put(nums2[i],i);
        }
        int[] result = new int[len1];
        int t= 0;
        for(int num : nums1){
            result[t++] = map.get(num);
        }
        return result;
    }
}

2.知识点



总结

相同题目

xxx

### LeetCode 面试经典 150 题 Python 解法及题目列表 #### 数组与字符串类问题 - **验证回文串** - 使用双指针方法来判断给定字符串是否为回文[^1]。 - **摆动排序** - 对于数组 `nums` ,定义其是一个摆动序列如果它满足如下条件之一: - nums[i] > nums[i + 1] < nums[i + 2] ... - 或者 nums[i] < nums[i + 1] > nums[i + 2] ... - **易混淆数** - 给定一个整数 N,当旋转 180 度之后仍然看起来像原来的数字,则该数字被称为“易混淆数”。 - **相隔为 1 的编辑距离** - 如果可以通过恰好一次操作使得两个字符串相同,则认为这两个字符串之间的编辑距离为 1。 - **反转字符串中的单词 II** - 不借助额外空间的情况下原地修改输入字符数组完成翻转。 #### 双指针算法应用实例 - **盛最多水的容器** - 寻找两条线构成的容器能够容纳最多的水量。此题可以利用双指针从两端向中间收缩的方法求解。 - **两数之和 II - 输入有序数组** - 已知升序排列的整数数组,在其中找到两个数使它们加起来等于特定的目标数值。 - **三数之和** - 查找所有不重复的三个数使其总和为零,并返回这些组合的结果集。 #### 滑动窗口技术案例分析 - **至多包含两个不同字符的最长子串** - 计算只含有两种字母的最大长度连续子串。 - **至多包含 K 个不同字符的最长子串** - 类似上述问题但允许更多种类的不同字符存在。 - **最大连续1的个数 II** - 允许将任意位置的一个'0'变成'1',计算此时可以获得多少个连续的‘1’。 - **长度为 K 的无重复字符子串** - 返回指定长度内不含任何重复字符的所有可能字串的数量。 #### 哈希表技巧实战演练 - **找出变位映射** - 判断两个字符串是不是彼此的变位词(即由相同的字母组成但是顺序不同的词语)。 - **回文排列** - 确认能否重新排列某个字符串形成有效的回文结构。 对于具体的每一道题目实现细节以及完整的Python版本解答方案,建议参考专门针对LeetCode面试准备而整理的经典150道编程练习题库文档[^3]。 ```python class Solution(object): def lengthOfLastWord(self, s): """ :type s: str :rtype: int """ s = s.strip() str_list = s.split() return len(str_list[-1]) if str_list else 0 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大涛小先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值