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

LeetCode 面试题 16.21. 交换和

文章目录

  • 一、题目
  • 二、C# 题解

一、题目

  给定两个整数数组,请交换一对数值(每个数组中取一个数值),使得两个数组所有元素的和相等。

返回一个数组,第一个元素是第一个数组中要交换的元素,第二个元素是第二个数组中要交换的元素。若有多个答案,返回任意一个均可。若无满足条件的数值,返回空数组。

示例:

输入: array1 = [4, 1, 2, 1, 1, 2], array2 = [3, 6, 3, 3]
输出: [1, 3]

示例:

输入: array1 = [1, 2, 3], array2 = [4, 5, 6]
输出: []

提示:

  • 1 <= array1.length, array2.length <= 100000

  点击此处跳转题目。

二、C# 题解

  排序 + 双指针:

public class Solution {public int[] FindSwapValues(int[] array1, int[] array2) {int sum1 = array1.Sum(), sum2 = array2.Sum();int diff = sum2 - sum1;if (diff % 2 != 0) return Array.Empty<int>(); // 如果差值为奇数,则必定找不到答案diff >>= 1;                                   // diff 除以 2 才是互换两个数的差值Array.Sort(array1);Array.Sort(array2);int j = 0;for (var i = 0; i < array1.Length; i++) {if (i > 0 && array1[i] == array1[i - 1]) continue;              // 和前面一样的数则跳过int target = array1[i] + diff;                                  // 目标数while (j < array2.Length && array2[j] < target) j++;            // 比目标数小则继续找if (j == array2.Length) break;                                  // 判断越界if (array2[j] == target) return new[] { array1[i], array2[j] }; // 找到目标则返回结果}return Array.Empty<int>();}
}
  • 时间:172 ms,击败 42.86% 使用 C# 的用户
  • 内存:50.94 MB,击败 71.43% 使用 C# 的用户

  哈希表直接查找:

public class Solution {public int[] FindSwapValues(int[] array1, int[] array2) {int sum1 = array1.Sum(), sum2 = array2.Sum();int diff = sum2 - sum1;if (diff % 2 != 0) return Array.Empty<int>();diff >>= 1;HashSet<int> set = new HashSet<int>(array2);foreach (int i in array1) {if (set.Contains(i + diff)) return new[] { i, i + diff };}return Array.Empty<int>();}
}
  • 时间:168 ms,击败 85.71% 使用 C# 的用户
  • 内存:49.35 MB,击败 85.71% 使用 C# 的用户
http://www.lryc.cn/news/230054.html

相关文章:

  • 未来之路:大模型技术在自动驾驶的应用与影响
  • Skywalking流程分析_5(字节码增强)
  • Windows conan环境搭建
  • 如何使用Cpolar+Tipask,在ubuntu系统上搭建一个私人问答网站
  • 怎么在uni-app中使用Vuex(第一篇)
  • 【MySQL】库的相关操作 + 库的备份和还原
  • 网络安全基础之php开发文件上传的实现
  • [文件读取]cuberite 文件读取 (CVE-2019-15516)
  • SpringBoot 自定义参数校验(5)
  • Win Docker Desktop + WSL2 部署PyTorch-CUDA服务至k8s算力集群
  • JLMR Micro Super Resolution Algorithm国产微超分算法DEMO
  • Docker的安装配置与使用
  • macOS文本编辑器 BBEdit 最新 for mac
  • Android Audio实战——音量设置Hal(二十)
  • jetson配置笔记
  • 使用select实现定时任务
  • uniapp的实战总结大全
  • No205.精选前端面试题,享受每天的挑战和学习
  • 保序回归:拯救你的校准曲线(APP)
  • 清华镜像源地址,适用于pip下载速度过慢从而导致下载失败的问题
  • arcgis--NoData数据处理
  • 基于单片机教室人数实时检测系统仿真及源程序
  • 【Linux笔记】Linux环境变量与地址空间
  • 【springboot】@restcontroller和@controller的区别
  • oracle 不支持的字符集 orai18n.jar ZHS16GBK 异常问题解决
  • 设计模式-04-原型模式
  • D. Jumping on Walls bfs
  • preg_replace调用system(“ls“)
  • MT8788核心板主要参数介绍_联发科MTK安卓核心板智能模块
  • Matlab批量提取图片特征向量