倒数第几个(本质上是将倒数 转化成(两个点之间)具体的距离)

简介: 倒数第几个(本质上是将倒数 转化成(两个点之间)具体的距离)

倒数第几个(本质上是将倒数 转化成(两个点之间)具体的距离)


1、19_删除链表的倒数第N个结点:

   // 方法三: 通过 设置两个距离是n 的指针(不断的往后走,走到最后,差距便是倒数
   //本质上是将倒数 转化成(两个点之间)具体的距离,而这距离是需要通过遍历到达的


// 方法三: 通过 设置两个距离是n 的指针(不断的往后走,走到最后,差距便是倒数
    //本质上是将倒数 转化成(两个点之间)具体的距离,而这距离是需要通过遍历到达的
    class Solution3 {
        public ListNode removeNthFromEnd(ListNode head, int n) {
            ListNode dummy = new ListNode(0, head);
            ListNode first = head;
            ListNode second = dummy;
            for (int i = 0; i < n; ++i) {
                first = first.next;
            }
            while (first != null) {
                first = first.next;
                second = second.next;
            }
            second.next = second.next.next;
            ListNode ans = dummy.next;
            return ans;
        }
    }

 

2、530_二叉搜索树的最小绝对差:

编程里要有思维:距离、差(是两个点或者两个数据之间的事)

二叉树求最小绝对值(两个结点的数据)差(距离)

~其实就是转化成了求二叉树中找到两个点的数据是在所有数据中最小的

本质是数据的关系,无关形态,咱需要拿到二叉树的数据(遍历)~然后题目要求要找出两个数据之间的差最小,这目标就变成了:如果处理数据?

可以进行升序处理,两个数据挨得近,差值越小,而且刚好升序符合 二叉树的遍历(即拿数据的时候,同时用一定规则(升序)处理数据,从而获得结果)

(1)差:首先要有两个数据啦,而遍历肯定是先一开始才拿到一个数据,所以咱要通过某种条件得知才拿到一个数据,不立马进行比较,同时记录“第一次”(前次数据),留给“”第二次”(当前数据)进行比较得出一个差值。

(2)过程中也是不断比较,更新差值:【补充一下:为啥不之间将题目给的接口,套用中序遍历的模式,而是另外再封装一个接口】:

(3)首先 尽量一个接口的方法名(名如其功能),其次,该方法若是 套用了中序的遍历模式的同时,中序用到的递归(这就彻底翻车了,函数功能很重要呀,递归之后的返回值表明不符题意了

(4)最后是,辅助变量(前一个结点的数据),若是写在了题意给的接口里,导致 无法区分开,中序遍历才刚刚开始,才刚刚拿到第一个结点数据(虽然也可以解决:通过定义为全局变量)

(5)最最后,结果变量,若是在题意给的接口里使用中序遍历,最后得到了一个结果的返回(。。。。。其实也有点挺麻烦的)

官网代码:

 

//从第二个结点开始,每次进入一个新的结点,都要不断的更新最小距离(同时咱还要好好利用中序的特点就是从小到大排序的呀,当前结点的加入得出的新最小值只需要跟前面一个进行对比即可)
    int prev;
    int ans;
    public int getMinimumDifference(TreeNode root) {
        prev = -1;
        ans = Integer.MAX_VALUE;
        inorder(root);
        return ans;
    }
    //通过拿到前一个的val ,第二个val 减掉即可得知最小的
    public void inorder(TreeNode node) {
        if(node == null)    return;
        inorder(node.left);
        //拿到当前结点,需要判断一下是否遍历到第二个结点了
        if(prev == - 1) {    //才遍历到当前第一个结点
            prev = node.val;
        }else {
            ans = Math.min(ans, node.val - prev);
            prev = node.val;
        }
        inorder(node.right);
    }



目录
相关文章
|
4天前
|
存储 人工智能 安全
AI 越智能,数据越危险?
阿里云提供AI全栈安全能力,为客户构建全链路数据保护体系,让企业敢用、能用、放心用
|
7天前
|
域名解析 人工智能
【实操攻略】手把手教学,免费领取.CN域名
即日起至2025年12月31日,购买万小智AI建站或云·企业官网,每单可免费领1个.CN域名首年!跟我了解领取攻略吧~
|
6天前
|
数据采集 人工智能 自然语言处理
3分钟采集134篇AI文章!深度解析如何通过云无影AgentBay实现25倍并发 + LlamaIndex智能推荐
结合阿里云无影 AgentBay 云端并发采集与 LlamaIndex 智能分析,3分钟高效抓取134篇 AI Agent 文章,实现 AI 推荐、智能问答与知识沉淀,打造从数据获取到价值提炼的完整闭环。
413 93
|
23小时前
|
开发者
「玩透ESA」ESA启用和加速-ER在加速场景中的应用
本文介绍三种配置方法:通过“A鉴权”模板创建函数并设置触发器路由;在ESA上配置回源302跟随;以及自定义响应头。每步均配有详细截图指引,帮助开发者快速完成相关功能设置,提升服务安全性与灵活性。
267 2
|
7天前
|
SQL 人工智能 自然语言处理
Geo优化SOP标准化:于磊老师的“人性化Geo”体系如何助力企业获客提效46%
随着生成式AI的普及,Geo优化(Generative Engine Optimization)已成为企业获客的新战场。然而,缺乏标准化流程(Geo优化sop)导致优化效果参差不齐。本文将深入探讨Geo专家于磊老师提出的“人性化Geo”优化体系,并展示Geo优化sop标准化如何帮助企业实现获客效率提升46%的惊人效果,为企业在AI时代构建稳定的流量护城河。
405 156
Geo优化SOP标准化:于磊老师的“人性化Geo”体系如何助力企业获客提效46%
|
6天前
|
数据采集 缓存 数据可视化
Android 无侵入式数据采集:从手动埋点到字节码插桩的演进之路
本文深入探讨Android无侵入式埋点技术,通过AOP与字节码插桩(如ASM)实现数据采集自动化,彻底解耦业务代码与埋点逻辑。涵盖页面浏览、点击事件自动追踪及注解驱动的半自动化方案,提升数据质量与研发效率,助力团队迈向高效、稳定的智能化埋点体系。(238字)
300 158