❤ leetCode简易题1-两数之和、简易2--回文数判断、简易14-最长公共前缀

❤ leetCode简易题1-两数之和、简易题14- 最长公共前缀

1、简易1-两数之和

① 题目要求

数字A + B = target,以target为求和结果,找出数组中符合的A、B数字下标。

第一次做的时候完全脑子一片蒙,随后认真看了看题目发现是发现找符合target和的两个数字下标

② 看了题解以后,第一次以双层for循环暴力破解题目【复杂度O(n²)】**

var twoSum = function (nums, target) {let datas = {};for (let i = 0; i < nums.length; i++) {for (let s = i + 1; s < nums.length; s++) {if (target==nums[i] + nums[s]) {return[i,s];}}}
};var nums= [2,7,11,15];
var target = 9;
// twoSum([2,7,11,15],13); 
输出如下:
console.log(twoSum([2,7,11,15],13)); //2+11  [0,2]
console.log(twoSum([2,7,11,15],22)); //2+11  [1,3]

将判断条件进行改变以后【target-nums[i]== nums[s]】 代码进行了优化

简单粗暴,2for循环逐个遍历判断var twoSum = function (nums, target) { let datas = {};for (let i = 0; i < nums.length; i++){ for (let s = i + 1; s < nums.length; s++) {if (target-nums[i] == nums[s]){ return[i,s];} } } };

③ 题解二

考虑到哈希表利用总和减去其中一个数判断另外一个数是否存在,存在:返回进去的数字下标和差值数字的下标;不存在,则记录当前减去数字的下标,方便函数下次继续判断和使用【复杂度O(n1)】**

isNaN(6) true

var twoSum = function(nums, target) {var keys = {};for(var i = 0;i < nums.length; i++) {var diff = target - nums[i];// 判断差值diff在键值对中是否存在 是则找到匹配数字 数组第二个数字为7,下标为1// keys[diff]=7,i=2 if(!isNaN(keys[diff])) {// 返回减去的数字下标和差值数字的下标return [keys[diff], i];}// 未出现匹配值 将数字存入键值对中以备后续判断// 当前数字假设为第三个 nums[i]=7,keys[7]=1  i就是判断数字的下标  建立key值 方便下次使用// 若是7的差值不存在,当前数字7的下标就是1,将1记录为7的下标keys[nums[i]] = i;}};

2、简易2–回文数判断

① 题目要求判断回文数

给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false

回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

例如,121 是回文,而 123 不是。

② 第一种解法-翻转字符串法

题解只有简单的一句

return x.toString()===x.toString().split('').reverse().join('');

理解代码

x.toString()
x为 123456就是 => 123456
x.toString().split(‘’) 就是数组 [‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’]
reverse()函数颠倒就是 [‘6’, ‘5’, ‘4’, ‘3’, ‘2’, ‘1’]
再用join()函数转化为字符串 就是654321

作用:
—————————————————————————————————
toString()方法可以根据所传递的参数把数值转换为对应进制的数字字符串
例如:var a = 32;
console.log(a.toString(2)); //返回字符串100000
console.log(a.toString(4)); //返回字符串200
——————————————————————————————
split()把一个字符串分割成字符串数组
例如 【1】var str=“How are you doing today?”;
var n=str.split(" “); // 此处有空格
n输出的值:How,are,you,doing,today?
【2】把空字符串 (”“) 用作 separator,那么 stringObject 中的每个字符之间都会被分割
var str=“How are you doing today?”;
var n=str.split(”");
n输出的值:H,o,w, ,a,r,e, ,y,o,u, ,d,o,i,n,g, ,t,o,d,a,y,?
——————————————————————————
join() 将数组元素转换为字符串
例如:【1】 ar fruits = [“Banana”, “Orange”, “Apple”, “Mango”];
var energy = fruits.join();
输出的值: Banana,Orange,Apple,Mango


【2】arr.join() // 返回的是⼀个字符串,如果数组为空则返回一个空字符串
var a = [‘a’, ‘b’, ‘c’];
var v1 = a.join(); // v1的值变为"a,b,c"
var v2= a.join(‘,’); // v2的值变为"a,b,c"
var v3 = a.join(‘+’); // v3的值变为"a+b+d"
var v4 = a.join(‘’); // v4的值变为"abc"


② 第二种解法-双指针遍历法

Math.floor()返回小于或等于一个给定数字的最大整数*/
如果我们测试的案例是121 
var isPalindrome = function(x) {var sel=x.toString();console.log(sel); //121var n=Math.floor(sel.length/2); // 1.5取整数为1 console.log(n); //输出1for(var i=0;i<n;i++){ console.log(sel[i]);  // 121 的第一个位置下标为o的是1 console.log(sel.length-1-i);  // 长度3-1-0=2  i为0小于n为1时候,所以此处i为0 console.log(sel[sel.length-1-i]);  // 1 //sel[2]=1  // 0,1,2 //第三位为1   if(sel[i]!=sel[sel.length-1-i]) return false;}return true;
};

最后成功!

3、简易题14- 最长公共前缀

① 题目要求

题目如下:

编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。

官方给的实例:

示例 1:
输入:strs = ["flower","flow","flight"]
输出:"fl"示例 2:
输入:strs = ["dog","racecar","car"]
输出:""
解释:输入不存在公共前缀。

② 思路分析

分析:

取出最长公共前缀,那我们就可以直接拿第一个出来,然后转为数组,然后拿后面的每一个去跟这个第一项作比较,看里面的字符是否相同,如果后面的字符创长度比这个第一项还短,那就可以直接忽略不计。比这个长的话,游戏继续。

具体实现:
数组为空,返回’’
循环里面的字符串每个的长度 i
循环外层数组长度 s
判断flower 下的f是否和flow 下的f相同
相同=> 返回l拼接到第一个下面依次
不相同=> 返回原本的

③ 解题方法

方式一:

//
var longestCommonPrefix = function(strs) {if(strs.length==0){return ''   };var allstring = "";for (var s = 0; s < strs[0].length; s++) {var dataA = strs[0][s];for (var m = 1; m < strs.length; m++) {if ( s >= strs[m].length ||  strs[m][s] !== strs[0][s]) {return allstring;}allstring +=  strs[0][s];}}return allstring
};

输出以后发现,虽然貌似没啥毛病,但是就是除了问题。
在这里插入图片描述

重新分析我们的逻辑可以发现

我依次使用了循环第一个数据字符串长度 ⇒ 整个数组的长度= > 当第一次能满足条件的时候,我把值塞进了allstring里面,但是这个时候返回的第一个字母l 实在我循环外层数组的时候(也就是重新循环了2次),所以返回的ll ,所以我的allstring 其实应该放到外层循环的外头即可,取循环第一次的其中相同的字符串即可。

完善我们的代码以后:

var strs = ["flower", "flow", "flight"],flower = ['f', 'l'];function strscommon(strs){if(strs.length==0){return ''   };var allstring = "";for (var s = 0; s < strs[0].length; s++) {var dataA = strs[0][s];for (var m = 1; m < strs.length; m++) {if ( s >= strs[m].length ||  strs[m][s] !== strs[0][s]) {return allstring;}}allstring +=  strs[0][s];}
}
console.log(strscommon(strs),'strsall');

查看我们的输出结果:

fl strsall

解题完成!

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

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

相关文章

了解一波经典的 I/O 模型

最近读了波网络 I/O 相关的文章&#xff0c;做下总结、摘录。&#xff08;未完&#xff09; 经典 I/O 模型 {% checkbox red checked, 阻塞式 I/O&#xff08;blocking I/O&#xff09; %}{% checkbox red checked, 非阻塞式 I/O&#xff08;non-blocking I/O&#xff09; %}…

docker可视化界面 - portainer安装

目录 一、官方安装说明 二、安装portainer 2.1拉取镜像 2.2运行portainer容器 2.3登录和使用portainer 一、官方安装说明&#xff1a; Install PortainerChoose to install Portainer Business Edition or Portainer Community Edition.https://www.portainer.io/install…

C# LINQ笔记

C# LINQ笔记 from子句 foreach语句命令式指定了按顺序一个个访问集合中的项。from子句只是声明式地规定集合中的每个项都要访问&#xff0c;并没有指定顺序。foreach在遇到代码时就执行其主体。from子句什么也不执行&#xff0c;只有在遇到访问查询变量的语句时才会执行。 u…

Unbtun环境切换

之前的环境都是下载到系统环境里面的&#xff0c;后面安装了anaconda发现切换不到系统环境里面了&#xff0c;通过查找资料可以发现&#xff1a; ubuntu的python可分为三大类&#xff1a; ubuntu自带的系统python环境 一般安装在/usr/bin/中python2和python3可以共存 anaconda…

[Qt学习笔记]Qt实现自定义控件SwitchButton开关按钮

1、功能介绍 在项目UI中使用较多的打开/关闭的开关按钮&#xff0c;一般都是找图片去做效果&#xff0c;比如说如下的图像来表征打开或关闭。 如果想要控件有打开/关闭的动画效果或比较好的视觉效果&#xff0c;这里就可以使用自定义控件&#xff0c;使用Painter来绘制控件。软…

JavaScript的学习笔记

<script src"index.js" defer></script>&#xff0c;defer的作用是延迟加载index.js文件 定义变量 变量的类型分为两大类&#xff1a;基本类型和复合类型 JavaScript是一种弱类型语言&#xff0c;所以没有强类型语言所具有的int,float,char等等&#x…

VScode通过ssh连接github

通过ssh连接github 1.生成公钥和私钥2.设置config文件3.配置ssh免密登录4.远程仓库初始化 1.生成公钥和私钥 首先选择一个文件夹&#xff0c;右击 git bash here&#xff0c;在命令行输入命令&#xff0c;按下三次回车生成一个**.ssh文件夹**&#xff0c;一般在用户的user根目…

AI浪潮下,新闻媒体的新变革与记者职业的未来发展

中国媒体经历了从口口相传到报纸、再到电视&#xff0c;最后到互联网自媒体的演变过程。传统报业在新媒体冲击下面临着存亡的挑战。 中国媒体的演变概括如下&#xff1a; 19世纪初&#xff1a;主要依靠口口相传和阅读报纸获取信息&#xff1b;20世纪&#xff1a;电视逐渐取代报…

MyBatis:查询与连接池

一、查询 1、多表查询 尽量避免使用多表查询&#xff0c;尤其是对性能要求较高的项目。因为多表查询必然会导致性能变低。 例如&#xff1a;select *from ta运行需要10ms&#xff0c;select *from tb 运行也需要10s。但是&#xff0c;select *from ta left join tb on ta.xx…

zabbix监控vmware esxi

一、zabbix服务端配置 修改zabbix_server.conf配置文件 vim /etc/zabbix/zabbix_server.conf #######zabbix_server.conf底部第二行开始添加下面配置######## StartVMwareCollectors5 #StartVMwareCollectors - 预先启动Vmware collector收集器实例的数量。此值取决于要监控的…

GEE显示研究区sentinel-2每年可用影像

第一次使用GEE&#xff0c;用了别人的代码&#xff0c;想查看每年影像可用数量&#xff0c;但是老是报错&#xff0c;说是null geometry&#xff0c;之前我是用GAMMA软件导出的kml文件&#xff0c;后面在arcgis自己勾画了sho文件&#xff0c;线类型&#xff0c;然后我就在想会不…

MySQL进阶-----索引的结构与分类

目录 前言 一、认识索引 二、索引结构 1.概述 2. 二叉树 3 .B-Tree 4.BTree 5.Hash 三、索引的分类 1 .索引分类 2 .聚集索引&二级索引 前言 索引&#xff08;index&#xff09;是帮助MySQL高效获取数据的数据结构(有序)。在数据之外&#xff0c;数据库系统还维…

【第十二届“泰迪杯”数据挖掘挑战赛】【2024泰迪杯】B题基于多模态特征融合的图像文本检索—解题全流程(持续更新)

2024 年(第 12 届)“泰迪杯”数据挖掘挑战赛B题 解题全流程&#xff08;持续更新&#xff09; -----基于多模态特征融合的图像文本检索 一、写在前面&#xff1a; ​ 本题的全部资料打包为“全家桶”&#xff0c; “全家桶”包含&#xff1a;模型数据、全套代码、训练好的模…

OpenLayers基础教程——使用WebGLPoints加载海量点数据

1、前言 最近遇到一个问题&#xff1a;如何在OpenLayers中高效加载海量的场强点&#xff1f;由于项目中的一些要求&#xff0c;不能使用聚合的方法加载。一番搜索之后发现&#xff1a;OpenLayers中有一个WebGLPoints类&#xff0c;使用该类可以轻松应对几十万的数据量&#xf…

汽车后视镜反射率检测光纤光谱仪:安全驾驶的守护神

在汽车的日常使用中&#xff0c;后视镜扮演着至关重要的角色。它不仅帮助驾驶员观察车辆后方的情况&#xff0c;还确保了行车的安全性。然而&#xff0c;由于各种原因&#xff0c;后视镜的反射率可能会降低&#xff0c;从而影响到驾驶员的视线范围和判断能力。为了解决这一问题…

windows允许指定IP段访问本地端口

虚拟机内部应用有时候需要访问windows的一些端口&#xff0c;例如数据库或Redis等&#xff0c;默认情况下&#xff0c;需关闭windows上的防火墙才可正常访问。本文通过在防火墙设置允许指定IP段进行访问来处理&#xff0c;不用每次操作都关闭防火墙。 入站规则-》新建规则 完成…

软考高项总结:第16章采购管理(二)

一、实施采购 1、实施采购过程的数据流向图 2、实施采购ITO 3、采购文档,是用于达成法律协议的各种书面文件,可包括: (1)招标文件:包括发给卖方的信息邀请书、建议邀请书、报价邀请书,或其他文件,以便卖方编制应答文件。 (2)采购工作说明书:向卖方清晰地说明目标…

掌握了这个分析方法,实现传输线阻抗5%的加工公差不是梦!

高速先生成员--黄刚 传输线阻抗控制对系统性能的重要性不言而喻&#xff0c;每一家的PCB加工板厂都在往能控制更严格的阻抗公差这个目标而不断努力。但是我们也知道&#xff0c;传输线阻抗的控制公差其实会受到PCB结构本身的因素影响&#xff0c;就好像下面这张PCB差分线的切片…

Nextcloud激活被锁用户

Nextcloud激活用户 如果docker下没有安装sudo 和 vim执行下面命令&#xff0c;安装了则跳过 #进入docker内部 #更新apt-get apt-get update #安装sudo apt-get install sudo #安装vim apt-get install vim 修改下面文件内容&#xff0c;否则执行occ命令可能报错 进入上面查询…

【zlm】问题记录:chrome更新引起的拉不出webrtc; 证书校验引起的放几秒中断

目录 chrome更新引起的拉不出webrtc 证书校验引起的放几秒中断 chrome更新引起的拉不出webrtc 【zlm】最新的chrome版本中的报错&#xff1a; 我有个问题event.js:8 [RTCPusherPlayer] DOMException: Failed to execute setRemoteDescription on RTCPeerConnection: Failed …