刷刷刷刷算法

链表

24. 两两交换链表中的节点
/**
 * Definition for singly-linked list.
 * function ListNode(val, next) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.next = (next===undefined ? null : next)
 * }
 */
/**
 * @param {ListNode} head
 * @return {ListNode}
 */
var swapPairs = function(head) {
let ret =new ListNode(0,head),temp=ret;
while(temp.next&&temp.next.next) {
    let cur=temp.next.next,pre=temp.next;
    pre.next=cur.next;
    cur.next=pre;
    temp.next=cur;
    temp=pre;
}
return ret.next
};
//首先创建虚拟头节点,然后用临时节点把要操作的节点保存下来,再交换位置,结束的条件为节点的下一个节点或者下下个为空
//注意点,不要操作空指针
142. 环形链表 II
/**
 * Definition for singly-linked list.
 * function ListNode(val) {
 *     this.val = val;
 *     this.next = null;
 * }
 */

/**
 * @param {ListNode} head
 * @return {ListNode}
 */
var detectCycle = function(head) {
    let fast=head,slow=head;
    if(!head||!head.next) {
        return null;
    }
    while(fast.next&&fast.next.next) {
        slow=slow.next;
        fast=fast.next.next;
        if(fast==slow) {
            slow=head;
            while(fast!==slow) {
                fast=fast.next;
                slow=slow.next;
            }
            return slow
        }
    }
    return null
};
//首先是判断有没有环,快指针每次走两步,慢指针走一步,当他们有相遇时,即为有环,否则返回null
//然后判断哪个是开始的节点,设慢指针走了x+y,快指针走了x+n(y+z)+y 得2(x+y)=x+y+n(y+z) x=(n-1)(y+z)+z 所以x和y相遇的点为开始点
//注意点,不要操作空指针
19. 删除链表的倒数第 N 个结点
/**
 * Definition for singly-linked list.
 * function ListNode(val, next) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.next = (next===undefined ? null : next)
 * }
 */
/**
 * @param {ListNode} head
 * @param {number} n
 * @return {ListNode}
 */
var removeNthFromEnd = function(head, n) {
    let ret =new ListNode(0,head),temp=ret,fast=ret,slow=ret;
    while(n-->=0) {
        fast=fast.next
    }
    while(fast) {
        fast=fast.next
        slow=slow.next
    }
    slow.next=slow.next.next
    return ret.next
};
//首先快指针移动n+1,然后分别移动快慢指针直到快指针为null,改变慢指针的next即可

哈希表

242. 有效的字母异位词
/**
 * @param {string} s
 * @param {string} t
 * @return {boolean}
 */
var isAnagram = function(s, t) {
    if(s.length!==t.length) return false;
    let arr =new Array(26).fill(0);
    let base = 'a'.charCodeAt();
    for(const i of s) {
        arr[i.charCodeAt()-base]++;
    }
    for(const i of t) {
        if(!arr[i.charCodeAt()-base]) return false
        arr[i.charCodeAt()-base]--;
    }
  
    return true;
};
//数据范围小数量小用数组,反正用set,有key value用map
//用哈希特性,首先遍历第一个数组,出现的进行++,第二个数组首先如果有为0的即与第一个数组有不同的元素,不为0则进行--

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

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

相关文章

50.HarmonyOS鸿蒙系统 App(ArkUI)web组件实现简易浏览器

50.HarmonyOS鸿蒙系统 App(ArkUI)web组件实现简易浏览器 配置网络访问权限: 跳转任务: Button(转到).onClick(() > {try {// 点击按钮时,通过loadUrl,跳转到www.example1.comthis.webviewController.loadUrl(this.get_url);} …

Root mapping definition has unsupported parameters: [all : {analyzer=ik_max_wor

你们好,我是金金金。 场景 我正在使用Springboot整合elasticsearch,在创建索引(分词器) 运行报错,如下 排查 排查之前我先贴一下代码 import org.elasticsearch.action.admin.indices.create.CreateIndexRequest; // 注意这个包SpringBootTe…

Linux中如何安装ImageMagick及其常规使用命令

在Linux中安装ImageMagick可以通过包管理工具进行安装。具体步骤如下: 打开终端(Terminal)。 使用以下命令更新系统软件包列表: sudo apt update使用以下命令安装ImageMagick: sudo apt install imagemagick安装完…

物理机安装centos7并配置基本环境,网络配置,docker配置

1.首先下载镜像Download 2.下载UltraISO 安装docker 第1步:卸载当前版本docker yum erase docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-selinux \docker-engine-selinux \do…

[生活][杂项] 如何正确打开编织袋

编织袋打开的正确姿势 面对单线分离右边的线头,然后依次拉开即可

YAML教程-1-基础入门

领取资料,咨询答疑,请➕wei: June__Go YAML简介 YAML(YAML Aint Markup Language)是一种用于数据序列化的人类可读格式。它广泛用于配置文件、数据交换、持续集成/持续部署(CI/CD)等领域。YAML的设计目标…

注意,把Python库安装在一个环境里,可能会“非常危险”!

如果说谁写Python不用第三方库,我敬他是条汉子。如今到处是轮子的时代,Python第三方库管理成了开发者们头疼的问题。 可能在看这篇文章的很多人,都没用过Python虚拟环境,不知道安装Python库需要考虑版本兼容问题。 那么把所有要…

基于SpringBoot的健身房管理系统

一.前言 本系统用了 Sping Data JPA 这一不常用的数据库框架,是一个值得学习研究的点。 本项目用户名:admin 密码: admin123 方可进入。项目源码在文章开头,下载到本地导入IDEA,修改配置文件中数据库连接信息后,导入项…

字段名称导致mybatisplus自带方法报错.BadSqlGrammarException: ### Error querying database. C

今天在建一个数据表之后,在springboot中使用了mybatisplus代码生成工具生成了java相关代码,在查询的时候,使用的是list()方法查询,发现居然会报错,找了好久。 org.springframework.jdbc.BadSqlGrammarException: ###…

锁策略和死锁问题

锁策略 乐观锁 vs 悲观锁重量级锁 vs 轻量级锁自旋锁 vs 挂起等待锁读写锁 vs 互斥锁公平锁 vs 非公平锁可重入锁 vs 不可重入锁死锁死锁产生的必要条件如何简单的解决死锁问题 小结 这里不是描述的某个特定锁,而是描述的锁的特性,描述的是"一类锁". 乐观锁 vs 悲观…

人到中年三两事儿

人到中年,常常伴随着一系列的焦虑和烦恼。这些焦虑可能源自对工作的不确定性、对未来的担忧、对家庭责任的增加,或是对个人成就的反思。在这个年纪,我们可能会发现自己站在人生的十字路口,面临着重要的选择和决策。 首先&#xff…

数智时代的AI人才粮仓模型解读白皮书(2024版)

来源:极客邦 自 2023 年上半年起,ChatGPT 等大模型技术蓬勃发展,AI 技术不断突破边界,展现 出惊人的潜力和发展速度。从早期的逻辑推理、专家系统,到如今的深度学习、神经网络, AI 技术显著缩小了科学与实…

【面试经典 150 | 二分查找】搜索旋转排序数组

文章目录 写在前面Tag题目来源解题思路方法一:二分查找 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法,两到三天更新一篇文章,欢迎催更…… 专栏内容以分析题目为主,并附带一些对于本题涉及到的数据结构等内容进行…

Redis中的Lua脚本(二)

Lua脚本 创建排序辅助函数 为了防止带有副作用的函数令脚本产生不一致的数据,Redis对math库的math.random函数和math.randomseed函数进行了替换。对于Lua脚本来说,另一个可能产生不一致数据的地方是哪些带有不确定性质的命令,比如对于一个集…

STM32串口通信

一、串口发送 1.初始化引脚 void Serial_Init(uint32_t BaudRate) {RCC_APB2PeriphClockCmd (RCC_APB2Periph_GPIOA ,ENABLE );RCC_APB2PeriphClockCmd (RCC_APB2Periph_USART1 ,ENABLE );GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode GPIO_Mode_AF_PP…

python自动化之网易自动点歌

这个代码是是使用的pyautogui库和pyperclip库完成的,这个库是开源的地址如下:https://github.com/asweigart/pyautogui这里详细的用法想学习的可以到这看看 下面是代码: import pyautogui import subprocess import pyperclip import time i…

如何进行 ICP 备案/公安部联网备案

👨🏻‍💻 热爱摄影的程序员 👨🏻‍🎨 喜欢编码的设计师 🧕🏻 擅长设计的剪辑师 🧑🏻‍🏫 一位高冷无情的全栈工程师 欢迎分享 / 收藏 / 赞 / 在看…

安装jmeter和ant

安装jmeter和ant 安装java环境 安装jdk和jre 下载Java SE Development Kit 8 Java SE subscribers will receive JDK 8 updates until at least December 2030. 选择指定包进行安装,如windows 共享账号参考:Oracle官网 账号及密码 目前官网下载低…

Java程序生成可执行的exe文件 详细图文教程

1.Java编辑器,如:idea、eclipse等,下载地址:IntelliJ IDEA: The Capable & Ergonomic Java IDE by JetBrainshttps://www.jetbrains.com/idea/2.exe4j,下载地址:ej-technologies - Java APM, Java Prof…

吴恩达<用于LLM应用程序开发的LangChain> L1-Model_prompt_parser

问题预览/关键词 课程地址如何获取openAI的API Key如何根据日期设置不同模型?如何调用OpenAI的API?如何使用OpenAI的API?langchain如何抽象OpenAI的API接口?langchain如何创建提示词模板并查看模板内容?langchain如何使用提示词模板生成提…