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

[失业前端恶补算法]JavaScript leetcode刷题top100(三)

专栏声明:只求用最简单的,容易理解的方法通过,不求优化,不喜勿喷
今天更新五个 easy 难度题目:

相交链表

  • 题面
    给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。
    图示两个链表在节点 c1 开始相交:
    题目数据 保证 整个链式结构中不存在环。
    注意,函数返回结果后,链表必须 保持其原始结构 。

  • 知识点:
    链表

  • 思路
    你可以这样理解,如果我们先跑一次 A 链表,再跑一次 B 链表,和你先跑一次 B 链表 ,再跑一次 A 链表,遍历的节点数就一样了。那么如果 A 和 B 链表有相同的部分的话,只要我们遍历 A 和 B ,以及 B 和 A 各一次,那么遍历过程中出现指向同一个节点的情况就说明后续部分是一致的。所以我们按顺序遍历 A 和 B ,如果遍历到底部了,则换一个链表继续遍历,如果过程中出现了指向同一个节点的情况,则返回这个节点

  • 代码

var getIntersectionNode = function(headA, headB) {if (headA === null || headB === null) {return null;}let pA = headA, pB = headB;while (pA !== pB) {pA = pA === null ? headB : pA.next;pB = pB === null ? headA : pB.next;}return pA;
};

多数元素

  • 题面
    给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。
    你可以假设数组是非空的,并且给定的数组总是存在多数元素。

  • 知识点
    哈希表、分治法

  • 思路
    我们先将数组的第一个数字作为基准,我们依次遍历数组,如果和基准一样,则计数+1,否则计数 -1,如果计数归 0 ,说明这个作为我们基准的数字目前出现频率不高,我们换用当前的数字作为基准继续操作,最后活下来的数字就是我们需要的数字。
    用更加形象的方式解释就是,现在有很多个军队打架,每次遇到不是自己阵营的人,那么一个队友就要和敌人一换一。现在从数组第一个位置的阵营开始检索,如果遇到了和当前阵营一样的就是友军,当前阵营的人数 + 1;否则就是敌军需要一个友军和敌军一换一,所以当前阵营人数 - 1 。如果阵营的人数归 0 ,那么这个阵容暂时就团灭了,我们从团灭他们的阵营开始新的遍历。最后活下来的阵营就是超过半数的阵营,因为他们一换一后至少多余一个人,所以遍历过程中肯定不会被团灭。

  • 代码

var majorityElement = function (nums) {let count = 0;let win = -1;for (var i = 0; i < nums.length; i++) {if (count == 0) {win = nums[i];count++;}else if(win == nums[i]){count++;}else{count--;}}return win;
};

反转链表

  • 题面
    给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。
  • 知识点
    链表
  • 思路
    头插法形成链表,从前往后遍历链表,每次将当前的节点插入到头部,所以随着链表的遍历,最先插入的节点会来到最尾部,所以头部最先遍历的节点最后来到了末尾,而链表尾部最后遍历的节点就会来到链表的头部,从而完成了链表的反转
  • 代码
var reverseList = function (head) {let prev = null;let curr = head;while (curr) {const next = curr.next;curr.next = prev;prev = curr;curr = next;}return prev;
};

翻转二叉树

  • 题面
    给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。
  • 知识点
    二叉树、深度优先搜索
  • 思路
    深度优先遍历整棵二叉树,对于每个节点,将二叉树的左右孩子对换,然后继续遍历二叉树的左子树和右子树
  • 代码
var invertTree = function(root) {let dfs = function(node){if(!node){return ;}t = node.left;node.left = node.right;node.right = t;if(node.right){dfs(node.right)}if(node.left){dfs(node.left)}}dfs(root);return root;
};

回文链表

  • 题面
    给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。

  • 知识点
    链表、回文、快慢指针

  • 思路
    我们先找到链表的中间位置,使用一快一慢两个指针,快的一次走两步,慢的走一步,这样当快的指针到达的时候,慢的指针将会对准链表的中间位置。注意,我们每次都让两个指针都走一步,如果快指针到达底部了则停止程序,没有到达则让它再走一步。这样处理后,如果是奇数的链表,指针会停在中间,偶数的链表则停在第 ( n/2 +1 )的位置。
    之后我们从慢指针的位置开始反转整个链表,代码逻辑在上面的题目里已经讲过了。反转完毕后,我们从头开始遍历原来的前半部分链表和反转的后半部分的链表,如果两者元素相同则是回文链表,否则不是。

  • 代码

var isPalindrome = function(head) {let t = head;let b = head;let a = head;while(b){b = b.next;a = a.next;if(b){b = b.next;}}let re = null;while( a ){let t = a.next;a.next = re;re = a;a = t;}while(re){if(t.val != re.val){return false;}t = t.next;re = re.next;}return true;
};

相关文章:

[失业前端恶补算法]JavaScript leetcode刷题top100(三)

专栏声明&#xff1a;只求用最简单的&#xff0c;容易理解的方法通过&#xff0c;不求优化&#xff0c;不喜勿喷 今天更新五个 easy 难度题目&#xff1a; 相交链表 题面 给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个…...

Spark RDD的设计与运行原理

一、Spark RDD概念 一个RDD就是一个分布式对象集合&#xff0c;本质上是一个只读的分区记录集合&#xff0c;每个RDD可以分成多个分区&#xff0c;每个分区就是一个数据集片段&#xff0c;并且一个RDD的不同分区可以被保存到集群中不同的节点上&#xff0c;从而可以在集群中的…...

Golang的下载与安装

Windows系统 进入golang官方下载网站:所有版本 - Go 编程语言如图所示 下载后打开您下载的 MSI 文件,然后按照提示安装 Go。 验证是否已安装 Go。...

广州蓝景分享—8大Web前端开发的趋势

2023 年 1 月 11 日&#xff0c;2022 年度 StateOfJS 调查结果正式公布&#xff01;StateOfJS 是前端生态圈中比较有影响力的且规模较大的数据调查。本文就来解读一下 2022 年 StateOfJS 的调查结果&#xff01; JavaScript 发展很快&#xff0c;但似乎 JavaScript 开发人员的…...

Java学习-MySQL-创建数据库表

Java学习-MySQL-创建数据库表 SHOW DATABASESUSE school CREATE TABLE IF NOT EXISTS student( id INT(10) NOT NULL AUTO_INCREMENT COMMENT 学号, name VARCHAR(30) NOT NULL DEFAULT 匿名 COMMENT 姓名, pws VARCHAR(20) NOT NULL DEFAULT 123456 COMMENT 密码, sex VARCHA…...

Ethercat学习-GD32以太网学习

文章目录1、GD32F4以太网简介2、以太网模框图简介3、以太网主要模块介绍SMI接口RMII接口与MII接口DMA控制器4、以太网配置流程5、其他1、GD32F4以太网简介 GD32F4系列以太网模块包含10/100Mbps以太网MAC&#xff0c;数据的收发都通过DMA进行操作&#xff0c;支持MII&#xff0…...

项目规模估算如何精准 4大注意事项

项目报价&#xff0c;需要首先进行项目规模估算&#xff0c;如何估算更精准&#xff0c;6大注意事项。 1、项目范围规划 在项目估算前&#xff0c;需要对项目范围进行规划&#xff0c;这包括所有活动以及开发可交付产品所需的流程。范围规划是前提&#xff0c;它明确定义了项目…...

低代码:助力乡村振兴事业开启“智慧模式”

伴随着脱贫攻坚目标任务的全面完成&#xff0c;我国“三农”工作重心历史性地转向全面推进乡村振兴&#xff0c;这也标志着我国农业农村工作迈上了一个新台阶。 什么是乡村振兴&#xff1f; 乡村振兴是新时代“三农”工作的总抓手&#xff0c;坚持农业农村优先发展&#xff0c;…...

Flutter——Isolate主线机制

简述 在DartFlutter应用程序启动时&#xff0c;会启动一个主线程其实也就是Root Isolate,在Root Isolate内部运行一个EventLoop事件循环。所以所有的Dart代码都是运行在Isolate之中的&#xff0c;它就像是机器上的一个小空间&#xff0c;具有自己的私有内存块和一个运行事件循…...

提取游戏《Limbus Company》(边狱公司)内素材

授人以鱼&#xff0c;不如授人以渔。 目录 注意事项 寻找音频文件 .bytes转为.fsb 必备工具 步骤 解决乱码 必备工具 步骤 提取.fsb文件 必备工具 可备工具 步骤 注意事项 文章关于出现乱码的处理方法和与编码相关的部分有误&#xff0c;已于2023/3/10更正。 相关…...

学生信息表

目录 一、功能说明 二、核心思想 三、所用知识回顾 四、基本框架 五、js功能实现部分 一、功能说明 &#xff08;1&#xff09;输入对应的信息&#xff0c;点击录入可以为下面的表格添加一条记录&#xff0c;注意当所填信息不完整时不允许进行提交。 &#xff08;2&…...

FOTA在AUTOSAR中的应用

FOTA介绍 FOTA(Firmware Over-The-Air)移动终端的空中下载软件升级,指通过云端升级技术,为具有连网功能的设备:例如手机、平板电脑、便携式媒体播放器、移动互联网设备等提供固件升级服务,用户使用网络以按需、易扩展的方式获取智能终端系统升级包,并通过FOTA进行云端升…...

2023/3/10 Vue核心知识的学习- Vue - v-model双向绑定原理

https://www.jianshu.com/p/2682b5a26869 定义&#xff1a;vue中双向绑定就是指v-model指令&#xff0c;可以绑定一个响应式数据到视图&#xff0c;同时视图中变化能同步改变该值。 通过Object.defineProperty( )对属性设置一个set函数&#xff0c;当数据改变了就会来触发这个…...

面朝大海,春暖花开丨2023年Kaadas凯迪仕全国经销商大会成功召开

3月8日&#xff0c;We——2023年Kaadas凯迪仕全国经销商大会将在中国青岛星光岛会议中心隆重举行&#xff0c;盛会汇聚了超过1000名优秀合作伙伴&#xff0c;规模空前。Kaadas凯迪仕品牌创始人&集团总裁苏志勇先生、集团董事长苏祺云先生以及各高层领导均莅临现场。 大会伊…...

【ubuntu】安装cuda+anaconda的docker环境,并用Vscode远程访问

目录下载英伟达docker配置docker的基本安装环境为vscode安装ssh服务安装anaconda下载英伟达docker docker pull nvidia/cuda配置docker的基本安装环境 apt-get install sudo sudo apt-get update sudo apt-get install wget sudo ps -e|grep ssh为vscode安装ssh服务 sudo ap…...

Python(青铜时代)——容器类的公共方法

内置函数 内置函数&#xff1a;不需要使用 import 导入库&#xff0c;就可以直接使用的函数 函数描述备注len(&#xff09;计算容器中元素个数del( )删除变量max( )返回容器中元素最大值如果是字典&#xff0c;只针对key比较min( )返回容器中元素最小值如果是字典&#xff0c…...

利用canvas给图片添加水印

前言前两天给个人网站添加了一个小功能&#xff0c;就是在文章编辑上传图片的时候自动给图片加上水印。给网页图片添加水印是个常见的功能&#xff0c;也是互联网内容作者保护自己版权的方法之一。本文简单记录一下借助canvas在前端实现图片添加水印的实现方法。canvas元素其实…...

保姆级使用PyTorch训练与评估自己的MobileViT网络教程

文章目录前言0. 环境搭建&快速开始1. 数据集制作1.1 标签文件制作1.2 数据集划分1.3 数据集信息文件制作2. 修改参数文件3. 训练4. 评估5. 其他教程前言 项目地址&#xff1a;https://github.com/Fafa-DL/Awesome-Backbones 操作教程&#xff1a;https://www.bilibili.co…...

Giscus,由 GitHub Discussions驱动的评论系统

在创建网站或博客时&#xff0c;许多人都希望能够为其内容提供评论功能&#xff0c;以与用户进行交流和互动。然而&#xff0c;实现这一点可能会非常复杂&#xff0c;需要处理许多不同的问题&#xff0c;如身份验证、反垃圾邮件、跨站脚本攻击等。为了帮助解决这些问题&#xf…...

【JSON文件解析】JSON文件

文章目录概要&#xff1a;本期主要介绍Qt解析JSON数据格式文件的方式。一、JSON数据格式1.JSON类似于XML&#xff0c;在JSON文件中&#xff0c;有且只有一个根节点2.JSON有两种主流包含型构造字符&#xff1a;{对象}、[数组]3.JSON的值主要包括&#xff1a;对象、数组、数字、字…...

OpenGL超级宝典学习笔记:纹理

前言 本篇在讲什么 本篇章记录对OpenGL中纹理使用的学习 本篇适合什么 适合初学OpenGL的小白 本篇需要什么 对C语法有简单认知 对OpenGL有简单认知 最好是有OpenGL超级宝典蓝宝书 依赖Visual Studio编辑器 本篇的特色 具有全流程的图文教学 重实践&#xff0c;轻理…...

主辅助服务市场出清模型研究【旋转备用】(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5;&#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密…...

不用费劲,这5款效率工具为你解决学习工作烦恼

今天我要向大家推荐5款超级好用的效率软件&#xff0c;无论是在学习还是办公中都能够极大地提高效率。这些软件可以帮助你解决许多问题&#xff0c;而且每个都是真正的神器。 1.键盘仿真鼠标——NeatMouse NeatMouse 是一个小型的工具能够使用鼠标光标控制指针。当你的鼠标不…...

PostgreSQL 数据库大小写规则

PostgreSQL 数据库对大小写的处理规则如下&#xff1a; 严格区分大小写默认把所有 SQL 语句都转换成小写再执行加双引号的 SQL 语句除外 如果想要成功执行名称中带有大写字母的对象&#xff0c;则需要把对象名称加上双引号。 验证如下&#xff1a; 想要创建数据库 IZone&…...

【springmvc】执行流程

SpringMVC执行流程 原理图 1、SpringMVC常用组件 DispatcherServlet&#xff1a;前端控制器&#xff0c;不需要工程师开发&#xff0c;由框架提供 作用&#xff1a;统一处理请求和响应&#xff0c;整个流程控制的中心&#xff0c;由它调用其它组件处理用户的请求 HandlerMa…...

什么是AIGC?

目录前言一、什么是AIGC&#xff1f;1、什么是PGC&#xff1f;2、什么是UGC&#xff1f;3、什么是PUCG&#xff1f;4、什么是AIGC&#xff1f;二、总结前言 很明显&#xff0c;ChatGPT的爆火&#xff0c;带动了AIGC&#xff08;AI-Generated Content&#xff09;概念的火热。 …...

【深度强化学习】(2) Double DQN 模型解析,附Pytorch完整代码

大家好&#xff0c;今天和大家分享一个深度强化学习算法 DQN 的改进版 Double DQN&#xff0c;并基于 OpenAI 的 gym 环境库完成一个小游戏&#xff0c;完整代码可以从我的 GitHub 中获得&#xff1a; https://github.com/LiSir-HIT/Reinforcement-Learning/tree/main/Model 1…...

【正则表达式】正则表达式语法规则

正则表达式语法规则1.普通字符 字符描述[ABC]匹配 […] 中的所有字符[^ABC]匹配除了 […] 中字符的所有字符[A-Z][A-Z] 表示一个区间&#xff0c;匹配所有大写字母&#xff0c;[a-z] 表示所有小写字母.匹配除换行符以外的任意字符[\s\S]匹配所有。\s 是匹配所有空白符&#xf…...

1636_isatty函数的功能

全部学习汇总&#xff1a; GreyZhang/g_unix: some basic learning about unix operating system. (github.com) 前面刚刚看完了一个函数和三个文件指针&#xff0c;一行代码懂了半行。但是继续分析我之前看到的代码还是遇到了困难&#xff0c;因为之前自己对于UNIX的一些基础知…...

基于Stackelberg博弈的光伏用户群优化定价模型(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

网站开发需要会的东西/做网络推广需要多少钱

Linux centos重启命令&#xff1a;  1、reboot 普通重启  2、shutdown -r now 立刻重启(root用户使用)  3、shutdown -r 10 过10分钟自动重启(root用户使用)  4、shutdown -r 20:35 在时间为20:35时候重启(root用户使用)  如果是通过shutdown命令设置重启的话&…...

dedecms做的网站收费吗/海口百度seo公司

导读 作为经理&#xff0c;我面试过很多人&#xff0c;大部分是开发者&#xff0c;部分是产品经理&#xff0c;有时候会面试主管或者副总监。 但不管是面试什么级别和什么工种的应聘者&#xff0c;我都会在过程中对他们提出一个相同的要求&#xff1a; 现在&#xff0c;请把我当…...

网站谷歌优化怎么做/网站关键词seo费用

如果您不介意使用JavaScript和jQuery&#xff0c;则可以使用jQuery client plugin检测操作系统&#xff0c;然后设置字体。它似乎是旧东西&#xff0c;但它适用于jQuery 1.3.2&#xff0c;如果它适用于jQuery 1.6.1&#xff0c;我不会感到惊讶。if($.client.os Mac)$(body).cs…...

wordpress查询页面id/文案写作软件app

ylbtech-Microsoft-CSharpSamples:ylbtech-LanguageSamples-Attibutes(特性)1.A&#xff0c;示例(Sample) 返回顶部“特性”示例 本示例演示了如何创建自定义特性类&#xff0c;如何在代码中使用这些类&#xff0c;以及如何通过反射查询它们。有关特性的其他信息&#xff0c;请…...

企业微信网站建设/重庆seo网络推广平台

### 集合简介类似于数学中的集合&#xff0c;对集合的操作有添加删除元素&#xff0c;有对多个集合求交并差等操作。 操作中key理解为集合的名字。比如在微博应用中&#xff0c;可以将一个用户所有的关注人存在一个集合中&#xff0c;将其所有粉丝存在一个集合。因为redis非…...

安徽建设新工程信息网站/下载百度网盘app

1.浮动子元素撑开父元素盒子高度 input 的placeholder会出现文本位置偏上的情况&#xff1a;PC端设置line-height等于height能够对齐&#xff0c;而移动端仍然是偏上&#xff0c;解决方案时是设置css line-height&#xff1a;normal; 2&#xff0c;往返缓存问题 点击浏览器的回…...