每日一题——LeetCode888

方法一 个人方法:

交换后要达到相同的数量,那么意味着这个相同的数量就是两个人总数的平均值,假设A总共有4个,B总共有8个,那么最后两个人都要达到6个,如果A的第一盒糖果只有1个,那么B就要给出6-(4-1)= 3个才能满足,如果B中恰好有一盒糖果是3个那就满足,如果B没有就考虑A中的下一盒有多少个糖果。

var fairCandySwap = function(aliceSizes, bobSizes) {var aliceNum= aliceSizes.reduce((acc,curr)=>acc+curr,0),bobNum=bobSizes.reduce((acc,curr)=>acc+curr,0)var average = (aliceNum+bobNum)/2,change=[]for(var i=0;i<aliceSizes.length;i++){var exchange = average - (aliceNum-aliceSizes[i])if(bobSizes.indexOf(exchange)!=-1){change.push(aliceSizes[i],exchange)break}}return change
};

消耗时间和内存情况:

消耗时间有点长,应该是bobSizes.indexOf(exchange)这个方法导致的,indexOf本质还是循环查找,就变成了循环嵌套循环,时间复杂度太高了,所以需要优化一下。

查找某个元素是否存在也可以用set集合的has()方法:

var fairCandySwap = function(aliceSizes, bobSizes) {var aliceNum= aliceSizes.reduce((acc,curr)=>acc+curr,0),bobNum=bobSizes.reduce((acc,curr)=>acc+curr,0)var average = (aliceNum+bobNum)/2,change=[]var set = new Set(bobSizes)for(var i=0;i<aliceSizes.length;i++){var exchange = average - (aliceNum-aliceSizes[i])if(set.has(exchange)){change.push(aliceSizes[i],exchange)break}}return change
};

时间明显更短了:

注意 set的查找为什么要更快,之前面试的时候被问到过set查找元素的时间复杂度。

        HashSet使用哈希表来存储元素,并通过哈希码来查找元素的位置。哈希码是通过对元素进行散列函数计算得到的。每个元素在哈希表中都有一个对应的位置,该位置存储了该元素的信息。

        当添加一个新的元素时,HashSet 会对该元素进行哈希计算,并找到该元素在哈希表中的位置。如果该位置已经被占用,则不会添加该元素,因为它已经存在于哈希表中。

        查询元素是否存在于哈希表中也是通过该元素的哈希码找到它在哈希表中的位置,并进行比较。

        由于哈希算法的性质,查找元素、添加元素和删除元素的时间复杂度为 O(1),因此,HashSet 的效率非常高。

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

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

相关文章

“真”5G标准出炉!不止是速度,这些难以置信的改变将彻底颠覆你的生活

来源&#xff1a;传球创新论坛摘要&#xff1a;5G时代又离我们近了一大步。6月14上午11时许&#xff0c;3GPP批准了第五代移动通信标准5G NR独立组网&#xff08;SA&#xff09;的冻结&#xff0c;这意味着首个完整意义的国际5G标准正式确立。未来&#xff0c;5G技术将成为和电…

写在囧男囧女们的七夕节

写在囧男囧女们的七夕节 当我们发现某些节日已经远离我们时&#xff0c;我们往往会以幽默的方式&#xff0c;让自己无厘头地般地分享节日的快乐 。比如&#xff0c;每年的六月一日&#xff0c;不管童年已经离我们多遥远&#xff0c;见朋友或同事就来上一句“节日快乐”&#xf…

安卓逆向_16 --- ARM 静态分析( 使用 IDA Pro 分析 ARM 汇编【java_ 和 JNI_OnLoad】 )

菜鸟总结 so 分析&#xff0c;arm 汇编&#xff0c;IDA 静态分析&#xff1a;https://www.52pojie.cn/thread-695063-1-1.html JNI 静态注册 so 和 IDA 导入的 JNI.h 文件.zip&#xff1a;https://download.csdn.net/download/freeking101/12571373 ARM 静态分析&#xff1a; …

人脑的前世今生

来源&#xff1a;科学网摘要&#xff1a;人类的神奇常常归结于一个智慧的大脑以及贯穿于其中的无比复杂的神经网络&#xff0c;并认为这源自上帝之手&#xff0c;但其实它并不是无中生有的&#xff0c;而是自然演化的产物&#xff0c;虽然是一个无与伦比的杰作&#xff0c;但人…

Web在线操作Office之Word

最近公司有个项目&#xff0c;需要直接在IE浏览器中操作Word文档&#xff0c;随后在网上搜了一些资料&#xff0c;感觉都不是很理想。不过&#xff0c;最后还是找到了一个 功能比较强的控件&#xff0c;是老外开发的控件&#xff0c;需要注册。还好&#xff0c;没有注册时&…

安卓逆向_17 --- IDA 动态调试【 环境搭建、so库调试【动态普通、动态debug模式】、JNI_OnLoad调试分析、java_ 开头函数分析】

哔哩哔哩视频&#xff1a;https://www.bilibili.com/video/BV1UE411A7rW?p54 IDA Pro调试so&#xff0c;附加完毕&#xff0c;跳到目标so基址&#xff0c;但是内容都是DCB伪指令&#xff1f;&#xff1a;https://bbs.pediy.com/thread-222646.htm Android 中 adb shell ps 查…

2018全球科技创新报告

来源&#xff1a;199IT互联网数据中心摘要&#xff1a;毕马威报告显示&#xff0c;我们如今正处在一个科技创新爆发的时代&#xff0c;对于科技企业来说&#xff0c;现在不是害怕失败或是裹足不前的时候。毕马威报告显示&#xff0c;我们如今正处在一个科技创新爆发的时代&…

安卓逆向_18 --- APK保护策略【Java代码混淆、资源混淆、签名校验】

Java 代码混淆介绍&#xff1a;https://www.bilibili.com/video/BV1UE411A7rW?p60 Android 反编译利器 jadx&#xff1a;GitHub上直接下载&#xff1a;https://github.com/skylot/jadx Jeb 软件是一款专业实用且为安全专业人士设计的 Android 应用程序的反编绎工具&#xff0…

VC++ CFileDialog文件选择对话框的构造和文件操作

CFileDialog文件选择对话框的使用&#xff1a;首先构造一个对象并提供相应的参数&#xff0c;然后判断选择的是确定按钮IDOK &#xff0c;还是取消按钮IDCANCEL 。构造函数原型如下&#xff1a;CFileDialog::CFileDialog( BOOL bOpenFileDialog,LPCTSTR lpszDefExt NULL,LPCTS…

谷歌的「未来城市」

来源&#xff1a;爱范儿摘要&#xff1a;自 2015 年以来&#xff0c;谷歌一直在进行一个神秘的项目。自 2015 年以来&#xff0c;谷歌一直在进行一个神秘的项目。它就是由谷歌主导的「高科技未来城市项目」。那这个高科技未来城市是个什么样的城市&#xff0c;让玩物君来告诉你…

解题报告 keke 的房子

1. 题目 Keke的房子 Description keke得到了一块n*m的土地&#xff0c;他灰常高兴&#xff0c;于是他想要盖个房子&#xff0c;keke的房子必须是正方形的。 但是&#xff0c;并不是土地的每个地方都能盖房子。地面上有一些地方不能盖一砖一瓦。 他当然希望将房子盖得大一…

安卓逆向_19( 一 ) --- APK保护策略【APP打开就崩溃 之 霸哥apk过签名校验】

From&#xff1a;霸哥磁力搜索apk 过签名校验&#xff1a;https://www.cnblogs.com/LuLuLuHao/p/12863978.html 霸哥磁力搜索app回编签名&#xff1a;https://www.ssfiction.com/archives/2293 https://www.cnblogs.com/LuLuLuHao 哔哩哔哩&#xff08; IDA 分析 so &…

OpenAI NLP最新进展:通过无监督学习提升语言理解

编译 | reason_W编辑 | 明 明出品 | AI科技大本营摘要&#xff1a;近日&#xff0c;OpenAI 在其官方博客发文介绍了他们最新的自然语言处理&#xff08;NLP&#xff09;系统。这个系统是可扩展的、与任务无关的&#xff0c;并且在一系列不同的 NLP 任务中都取得了亮眼的成绩。但…

安卓逆向_19( 二 ) --- APK保护策略【重新签名后安装打开失败 --- 书旗小说.apk、浦发银行.apk的过签名校验【so 文件修改保存】】

From&#xff08; 书旗小说过签名校验 【 使用 DDMS 分析方法调用流程 】 &#xff09;&#xff1a;https://www.cnblogs.com/LuLuLuHao/p/12874468.html 签名校验一般步骤&#xff1a; 1. 先查有没有加壳&#xff0c;如果有壳&#xff0c;先脱壳2. 如果没加壳&#xff0c;则 …

GPU、FPGA芯片成为增强机器学习能力的“左膀右臂”

选自&#xff1a;forbes 编译&#xff1a;网易智能 参与&#xff1a;nariiy在商业软件中&#xff0c;电脑芯片已被遗忘。对于商业应用程序来说&#xff0c;这是一种商品。由于机器人技术与个人硬件设备联系更为紧密&#xff0c;因而制造应用程序仍然更侧重于硬件部分。自20世纪…

C++ 第三方常用网络库

From&#xff1a;https://www.cnblogs.com/aitantianderuangutou/p/11416902.html (1) ACE 庞大、复杂&#xff0c;适合大型项目。开源、免费&#xff0c;不依赖第三方库&#xff0c;支持跨平台。 http://www.cs.wustl.edu/~schmidt/ACE.html (2) Asio Asio基于Boost开发的异…

HDU1878-欧拉回路(入门题+并查集)

题意&#xff1a; 判断一个图是否是欧拉回路。 欧拉回路&#xff1a; 图 G 的一个回路,若它通过 G 中每条边一次且仅一次,则称为欧拉回路。 其中有著名的哥尼斯堡七桥问题或一笔画问题。&#xff08;原来小时候我们就接触欧拉回路了&#xff0c;欧拉回路还是蛮常见&#xff0c;…

增强现实技术的9个最新应用趋势

来源&#xff1a;资本实验室摘要&#xff1a;随着AR技术的成熟&#xff0c;AR与行业的融合越来越深入。从设计到营销&#xff0c;从教育到医疗&#xff0c;从出行到文化&#xff0c;AR正在重新定义各产业的思维方式和运行方式。1.教育AR应用程序正在以更具互动性的方式改变教学…

Linux 系统调用 Ptrace 详解

From&#xff1a;https://blog.csdn.net/u012417380/article/details/60470075 Ptrace 详解&#xff1a;https://www.cnblogs.com/tangr206/articles/3094358.html ptrace运行原理及使用详解&#xff1a;https://blog.csdn.net/edonlii/article/details/8717029 ptrace 函数代…

10年软件开发教会我最重要的10件事[转]

1.面向对象比你想象的要难得多 也许只有我有这种想法&#xff0c;不过我曾经以为计算机科学课上学过的“面向对象”是很简单的东西。我的意思是&#xff0c;创建一些类来模拟现实世界能有多难啊&#xff1f;其实&#xff0c;那还真是挺难的。 十年之后&#xff0c;我仍然在…