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

news/2024/4/28 22:14:35/文章来源:https://blog.csdn.net/weixin_43615570/article/details/137014603

❤ 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.luyixian.cn/news_show_1026960.aspx

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

相关文章

论文导读 | 漫谈编辑问题

摘要 本文着眼于深度学习模型在各个领域中的编辑问题&#xff0c;从通用的分类器编辑算法切入&#xff0c;展开介绍针对扩散模型的图像编辑问题和针对大语言模型的知识编辑问题&#xff0c;希望能为读者关于“修改模型的行为”这一话题提供一些启发。 引言 当我们训练好一个…

【问题分析】InputDispatcher无焦点窗口ANR问题【Android 14】

1 问题描述 Monkey跑出的无焦点窗口的ANR问题。 特点&#xff1a; 1&#xff09;、上层WMS有焦点窗口&#xff0c;为Launcher。 2&#xff09;、native层InputDispacher无焦点窗口&#xff0c;上层为”recents_animation_input_consumer“请求了焦点&#xff0c;但是”rece…

高防DNS和高防IP一样吗?

高防DNS和高防IP在功能和目标上有所不同&#xff0c;因此它们并不完全相同。 高防DNS是一种针对DNS服务的防护措施&#xff0c;旨在保护域名解析免受DDoS攻击等网络威胁的影响。它利用高防服务器和高防机房的资源&#xff0c;对无效流量进行清洗&#xff0c;保障DNS服务器的安…

零基础学习挖掘PHP网站漏洞

教程介绍 本套课程&#xff0c;分为三个阶段&#xff1a;第一阶段&#xff1a;基础篇 学习PHP开发的基础知识&#xff0c;对PHP常见的漏洞进行分析&#xff0c;第二阶段&#xff1a;进阶篇 实战PHP漏洞靶场&#xff0c;了解市面上的PHP主流网站开发技术&#xff0c;并对市面上…

图解MySQL目录

资料来源 : 小林coding 小林官方网站 : 小林coding (xiaolincoding.com) 一 .图解MySQL介绍 重点突击 MySQL 索引、事务、锁、日志等面试常问知识。 二 . 基础篇 执行一条 select 语句&#xff0c;期间发生了什么&#xff1f; : 执行一条 select 语句&#xff0c;期间发生了什…

SQL的事务及其ACID属性

目录 SQL中的事务简介事务和ACID属性SQL事务中的关键命令示例SQL事务的隔离层级1. 未提交读取2. 提交后读取3. 可重复读取4. 可序列化脏读、不可重复读或虚读脏读取不可重复读取(未提交读取)虚读取推荐超级课程: Docker快速入门到精通Kubernetes入门到大师通关课AWS云服务快速…

使用express Vue+Node搭建的网上购物商城

前言 项目采用的技术栈: VueNodeMySQL 前端&#xff1a;用Vue-cli搭建&#xff0c;使用Vue全家桶element-ui 后端&#xff1a;express框架 数据库&#xff1a;MySQL 一、功能 普通用户 注册、登录&#xff08;图形验证码&#xff09;定位 &#xff08;腾讯地图定位功能&#…

查找中常见的树数据结构

查找中常见的树数据结构 一、排序二叉树二、平衡二叉树三、红黑树&#xff08;自平衡二叉树&#xff09;四、B树五、B树 在动态查找中常见的树相关的数据结构包括&#xff1a; 排序二叉树&#xff08;Binary Search Trees&#xff09;平衡二叉树&#xff08;AVL Trees&#xff…

ssh 公私钥

一、生成ssh公私钥 生成自定义名称的SSH公钥和私钥对&#xff0c;需要使用ssh-keygen命令&#xff0c;这是大多数Linux和Unix系统自带的标准工具。下面&#xff0c;简单展示如何使用ssh-keygen命令来生成具有自定义名称的SSH密钥对。 步骤 1: 打开终端 首先&#xff0c;打开我…

鸿蒙HarmonyOS应用开发之在NDK工程中使用预构建库

在NDK工程中&#xff0c;可以通过CMake语法规则引入并使用预构建库。在引用预构建库时&#xff0c;模块libs目录中的预构建库&#xff0c;以及在CMakeList.txt编译脚本中声明的预构建库都会被打包。 例如在项目中需要使用预构建库libavcodec_ffmpeg.so&#xff0c;其开发态存放…

【数据库管理操作】Mysql 创建学生数据库及对数据表进行修改

MySQL 创建学生成绩数据库 1.创建数据库 create database studentscore;创建完成之后&#xff0c;如果需要使用该数据&#xff0c;使用use命令 use studentscore;创建表前查看当前数据库中包含的表 show tables; 2.创建bclass表 create table bclass( class_id char(8) …

蓝桥杯刷题day09——霓虹【算法赛】

一、问题描述 晚上,小蓝正无聊的走在大路上,小蓝所在的街区是—个带有赛博朋克风格的街区。 他抬头—看,看到了很多霓虹灯牌。在其中的某一个店铺前,挂着一排的数字灯牌,每一个数字的显示都依靠7段LED管,亮着的灯管组成数字,具体来说如下图所示: 小蓝刚学过数字电路,他…

数据库系统概论-第3章 关系数据库标准语言SQL

3.1 SQL概述 3.2 学生-课程数据库 3.3 数据定义 3.4 数据查询 3.5 数据更新 3.6 空值的处理 3.7 视图 3.8 小结

Java_19 罗马数字转整数

罗马数字转整数 罗马数字包含以下七种字符: I&#xff0c; V&#xff0c; X&#xff0c; L&#xff0c;C&#xff0c;D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1…

vue3+threejs新手从零开发卡牌游戏(十三):上场手牌添加攻击力文字

在utils/common.ts下新建渲染场上手牌文字方法&#xff1a; // 渲染场上手牌文字 const renderSiteCardText (mesh: any, font: any) > {return new Promise((resolve, reject) > {let pos mesh.positionconst geometry new TextGeometry( ATK ${mesh.userData._ATK}…

蓝桥杯2023省赛:矩阵总面积|模拟、数学(几何)

题目链接&#xff1a; 0矩形总面积 - 蓝桥云课 (lanqiao.cn) 说明&#xff1a; 参考文章&#xff1a;矩形总面积计算器&#xff1a;计算两个矩形的总面积&#xff0c;包括重叠区域_矩形r1的左下角坐标为x1, yl 、宽度为w1、高度为h1, 矩形r2的左下角坐标为x2,y2、宽-CSDN博客…

面试算法-93-交错字符串

题目 给定三个字符串 s1、s2、s3&#xff0c;请你帮忙验证 s3 是否是由 s1 和 s2 交错 组成的。 两个字符串 s 和 t 交错 的定义与过程如下&#xff0c;其中每个字符串都会被分割成若干 非空 子字符串 &#xff1a; s s1 s2 … sn t t1 t2 … tm |n - m| < 1 交错…

如何用联合(共用体)union验证系统大小端

一&#xff1a;思路 由联合体的特点&#xff0c;可知上图&#xff0c;char c 和 int i 共用四个字节&#xff0c;假设是小端&#xff0c;则由左到右是低地址到高地址&#xff0c;四个字节的内容如图所示01 00 00 00 代码展示&#xff1a; 如果第一个字节是1&#xff0c;则证明…

爱上数据结构:顺序表和链表

一、线性表 线性表&#xff08;linear list&#xff09;是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使 用的数据结构&#xff0c;常见的线性表&#xff1a;顺序表、链表、栈、队列、字符串... 线性表在逻辑上是线性结构&#xff0c;也就说是连续的一条…

NAT---网络地址转换技术

Network Address Translation 1、起源&#xff1a;ip地址不够用 2、作用&#xff1a;让私网地址映射成公网地址&#xff0c;进而访问网络。 3、私网Ip地址的范围&#xff1a; A类&#xff1a;10.0.0.0-10.255.255.255 B类&#xff1a;172.16.0.0-172.31.255.255 C类&…