剑指offer:22-25记录

输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点。

示例:

给定一个链表: 1->2->3->4->5, 和 k = 2.

返回链表 4->5.

思路:快指针先走k步,然后快慢指针一起走到快指针到头为止,这时慢指针就是答案。

/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode(int x) { val = x; }* }*/
class Solution {public ListNode getKthFromEnd(ListNode head, int k) {ListNode former = head, latter = head;for(int i = 0; i < k; i++)former = former.next;while(former != null) {former = former.next;latter = latter.next;}return latter;}
}

定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。

 

示例:

输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
 

限制:

0 <= 节点个数 <= 5000

/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode(int x) { val = x; }* }*/
class Solution {public ListNode reverseList(ListNode head) {//前一个节点ListNode pre = null;//当前处理节点ListNode cur = head;//记录后一个节点用ListNode tmp = null;while(cur!=null) {//记录当前节点的下一个节点tmp = cur.next;//然后将当前节点指向precur.next = pre;//pre和cur节点都前进一位pre = cur;cur = tmp;}return pre;}
}

输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。

示例1:

输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4
限制:

0 <= 链表长度 <= 1000

思路:链表的一次归并。思路和数组类似。

/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode(int x) { val = x; }* }*/
class Solution {public ListNode mergeTwoLists(ListNode l1, ListNode l2) {ListNode ans=new ListNode(-1);ListNode temp=ans;while(l1!=null && l2!=null){if(l1.val>l2.val){ans.next=l2;l2=l2.next;}else{ans.next=l1;l1=l1.next;}ans=ans.next;}if(l1!=null)ans.next=l1;if(l2!=null)ans.next=l2;return temp.next;}
}

 

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

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

相关文章

尚硅谷李老师笔记3DQL

一&#xff1a;语法 select 查询列表 from 表名 二&#xff1a;特点 1.查询列表可以是字段&#xff0c;常量&#xff0c;表达式&#xff0c;函数&#xff0c;也可以是多个的组合结果 2.查询结果是一张虚拟表 三&#xff1a;示例 1.查询单个字段 select 字段名 from 表名 2.查…

java 防止表单重复提交

防止表单重复提交&#xff0c;或者是防止按F5 刷新提交表单。 在WEB开发中是经常会碰到这样的问题的。 目前主流的解决方法有以下三种&#xff1a; 1、采用脚本来解决 2、重定向到别的页面 3、使用s:token 标签 由于我是使用S2SH来开发的&#xff0c;所以就选择了第三种方法。 …

贪吃蛇源代码111

#include <stdio.h> #include <stdlib.h> #include <conio.h> #include <string.h> #include <time.h> const int H 8; //地图的高 const int L 16; //地图的长 char GameMap[H][L]; //游戏地图 int key; //按键保存 int sum 1, over 0; //蛇…

剑指offer:26-30记录

输入两棵二叉树A和B&#xff0c;判断B是不是A的子结构。(约定空树不是任意一个树的子结构) B是A的子结构&#xff0c; 即 A中有出现和B相同的结构和节点值。 例如: 给定的树 A: 3 / \ 4 5 / \ 1 2 给定的树 B&#xff1a; 4 / 1 返回 true&#xff0c;因为…

Calendar类 set方法 get方法 add方法

Calendar类 set方法 get方法 add方法 package asd; import java.util.*; public class zixue { public static void main(String[] args) { demo01();//实验的是get()方法&#xff1b; demo02();//实验的是set()方法&#xff1b; } //---------------------------------------…

剑指offer:31-32记录(4道)

输入两个整数序列&#xff0c;第一个序列表示栈的压入顺序&#xff0c;请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如&#xff0c;序列 {1,2,3,4,5} 是某栈的压栈序列&#xff0c;序列 {4,5,3,2,1} 是该压栈序列对应的一个弹出序列&#xff0c;但…

炸窝Vector简介

/** 1.Vector的介绍&#xff1a;* Vector<E>是所有单列集合的鼻祖&#xff0c;但是在JAVA1.2版本之后就被Collection集合所替代&#xff0c;Vector可以实现可增长的对象数组* 与数组一样&#xff0c;它包含可以使用整数索引进行访问的组件* 但是它的大小可以根据需要增加…

剑指offer:33-37记录

输入一个整数数组&#xff0c;判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true&#xff0c;否则返回 false。假设输入的数组的任意两个数字都互不相同。 参考以下这颗二叉搜索树&#xff1a; 5 / \ 2 6 / \ 1 3 示例 1&#xff1a; 输入: [1,6,…

剑指offer:39-42记录

数组中有一个数字出现的次数超过数组长度的一半&#xff0c;请找出这个数字。 你可以假设数组是非空的&#xff0c;并且给定的数组总是存在多数元素。 示例 1: 输入: [1, 2, 3, 2, 2, 2, 5, 4, 2] 输出: 2 限制&#xff1a; 1 < 数组长度 < 50000 思路&#xff1a;…

炸窝哈希值的原理

package asdfg; import java.util.HashSet; import java.util.Iterator; import java.util.Set; public class aaa { public static void main(String[] args) {/*** 小提示&#xff1a;* 1.对于所有没有索引的方法&#xff0c;我们都不能使用for循环进行遍历* 2.提到接口&am…

剑指offer:45-48记录

输入一个正整数数组&#xff0c;把数组里所有数字拼接起来排成一个数&#xff0c;打印能拼接出的所有数字中最小的一个。 示例 1: 输入: [10,2] 输出: "102" 示例 2: 输入: [3,30,34,5,9] 输出: "3033459" 提示: 0 < nums.length < 100 说明:…

炸窝(可变函数)

可变函数源码理解&#xff1a;学生角度&#xff0c;更易操作 public static void main(String[] args) {/*int cadd(10,29);System.out.println(c);*///此时可以随意的进行数据的传递add(20,30,40);//[I1db9742:解释&#xff0c;中括号代表是一个数组&#xff0c;为一个地址值…

剑指offer:50-53记录

在字符串 s 中找出第一个只出现一次的字符。如果没有&#xff0c;返回一个单空格。 示例: s "abaccdeff" 返回 "b" s "" 返回 " " 限制&#xff1a; 0 < s 的长度 < 50000 思路&#xff1a;map记录次数&#xff0c;再…

Eclipse安装插件的几种方式

前段时间Google转向了IDEA&#xff0c;貌似有些动摇了Eclipse作为Java领域IDE龙头老大的位置&#xff0c;为此引起了Eclipse粉丝和IDEA粉丝的集体骂战。类似这种骂战向来都不绝于耳&#xff0c;貌似程序员的都比较多&#xff0c;可能大家都是搞技术出身&#xff0c;都很自信。其…

炸窝(Collections当中的addAll方法)

public class aaa { public static void main(String[] args) {/** java.util.Collections是集合工具类&#xff0c;用来对集合进行操作&#xff0c;* * 集合Collections当中的两个方法&#xff1a;* 1.addAll方法&#xff1a;因为是静态方法&#xff0c;嗯所以可以.直接吹风机…

剑指offer:55-58记录

输入一棵二叉树的根节点&#xff0c;求该树的深度。从根节点到叶节点依次经过的节点&#xff08;含根、叶节点&#xff09;形成树的一条路径&#xff0c;最长路径的长度为树的深度。 例如&#xff1a; 给定二叉树 [3,9,20,null,null,15,7]&#xff0c; 3 / \ 9 20 …

Map集合知识点(炸窝)

/** * 简单的介绍一下我们接下来准备学习的集合MAP集合 * * Map集合的简单概述&#xff1a; * 其中的健是不能进行重复的&#xff0c;而且每一健只能映射一个值&#xff0c;简单的说就是K与V是一一对应的&#xff0c;不能有其他的关系&#xff0c; * 但是我们注意到value值是可…

剑指offer:63-66记录

假设把某股票的价格按照时间先后顺序存储在数组中&#xff0c;请问买卖该股票一次可能获得的最大利润是多少&#xff1f; 示例 1: 输入: [7,1,5,3,6,4] 输出: 5 解释: 在第 2 天&#xff08;股票价格 1&#xff09;的时候买入&#xff0c;在第 5 天&#xff08;股票价格 6&a…

【大总结3】leetcode解题总览(算法、剑指offer、SQL、多线程、shell)

3/22更新 剑指offer 题目链接 建议大部分题都会做&#xff0c;都能比较快速且准确的写出来。关于做题方式&#xff0c;我的建议是&#xff1a;一道一道刷即可&#xff0c;因为难度一般&#xff0c;不用系统的学习什么知识&#xff0c;遇到实在不会的就跳过即可。 我这里写了…

逆序存储【数据结构】

C语言中malloc是动态内存分配函数。 函数原型&#xff1a;void malloc(unsigned int num_bytes); 参数&#xff1a;num_bytes 是无符号整型&#xff0c;用于表示分配的字节数。 返回值&#xff1a;如果分配成功则返回指向被分配内存的指针(此存储区中的初始值不确定)&#xff0…