最新要闻
- 今年暑期档总票房突破120亿
- 儿子考上北大 奶茶店主送2000杯奶茶 学生:沾沾喜气
- 少女连续数日高烧不退确诊“接吻病” 医生科普:病毒感染引起
- 占用应急车道 深圳一宝马男连着两天被后车拍照举报:12分罚款6000
- 2176万人观看 《封神第一部》票房逼近10亿 知名编剧:第二部比第一部好看至少十倍
- 大众被曝将使用小鹏旧平台 明年开始向小鹏支付“技术费”
- 姚振华,又输了!
- J.D.Power发布汽车保值率排行榜:日系车屠榜 飞度保值堪比保时捷
- 自主知识产权!“新舟”60灭火机平台首飞成功:运输、灭火全能王
- 北京瑞蚨祥(关于北京瑞蚨祥的介绍)
- 国人自己的操作系统!华为鸿蒙OS 4.0下周发布:官方海报大有玄机
- 史上最贵!iPhone 15系列全系售价曝光 网友:多花钱也得买高配版
- 华为nova 10 Pro官方翻新机视频开箱:成色接近新机 只要2499元起
- 全国文化和旅游资源开发工作会议在并召开
- 男子开车时跟老婆吵架车瞬间报废 承担事故全部责任:网友感叹
- 票房近10亿!《封神》进2023年票房榜前十:投资30亿 导演称若失败10年还债
广告
手机

英国房地产因利率上升陷入困境 房价正以2011年来最快速度下跌

宁夏评选出上半年10名“宁夏好人” 95后消防员因敬业奉献入选
- 英国房地产因利率上升陷入困境 房价正以2011年来最快速度下跌
- 宁夏评选出上半年10名“宁夏好人” 95后消防员因敬业奉献入选
- 离婚时共同债务应该怎么处理?
- 华为云盘古大模型3.0正式发布
- 支持自动长文生成,WPS AI发布:基于大语言模型的智能办公助手
- 《街头霸王6》全球总销量突破200万份 卡普空再次为其玩家送上礼物
家电
代码随想录算法训练营第三天|力扣203.移除链表元素、力扣707.设计链表、力扣206.反转链表
(资料图片仅供参考)
链表
定义:通过指针串联在一起的线性结构,每一个节点由两个部分组成:数据域和指针域(存放指向下一个节点的指针),最后一个节点的指针域指向null,即为空指针。
链表类型
1. 单链表,见上图2. 双链表
3. 循环链表,即链表首尾相连,可以解决约瑟夫环问题
链表的存储方式
数组在内存中是连续分布的,但是链表在内存中不是连续分布的
链表的定义
public class ListNode { // 结点的值 int val; // 下一个结点 ListNode next; // 节点的构造函数(无参) public ListNode() { } // 节点的构造函数(有一个参数) public ListNode(int val) { this.val = val; } // 节点的构造函数(有两个参数) public ListNode(int val, ListNode next) { this.val = val; this.next = next; }}
链表的插入、删除与查询
移除链表元素(力扣203.)
1. 有虚拟节点方式;记得head为val值的边缘条件,以及target指针的空指针问题
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next) { this.val = val; this.next = next; } * } */class Solution { public ListNode removeElements(ListNode head, int val) { ListNode low = new ListNode(); low.next = head; ListNode target = head; if(head == null){ return null; } while(head.val == val){ head = head.next; if(head==null){ return head; } } while(target != null){ while(target.val == val){ low.next = target.next; target = target.next; if(target == null){ return head; } } low = low.next; if(target!=null){ target = target.next;} } return head; }}
- 无虚拟节点方式;先对head指向的值处理,在运行到非val值后扫描后指针
/**无虚拟节点方式;先对head指向的值处理,在运行到非val值后扫描后指针 */class Solution { public ListNode removeElements(ListNode head, int val) { //先将head指针处理至不为val值的地方 while(head != null && head.val == val){ head = head.next; } //head为空,则直接返回 if(head == null){ return head; } ListNode pre = head; ListNode post = head.next; while(post != null){ if(post.val == val){ pre.next = post.next; }else{ pre = post; } post = post.next; } return head; }}
设计链表:实现五个函数(力扣707.)
获取第n个节点的数值
- 使用虚拟头结点的方式 dummynode
- while(n)
- cur = cur.next;
- n--
头部插入节点
- new一个新node
- newNode.next=dummyHead.next;(注意顺序)
- dummyhead.next=newNode;
- size++;
尾部插入节点
- cur = dummyhead;
- while(cur.next == null)
- cur = cur.next;
- cur.next = newNode
第n个节点的插入
- cur应该指向第n个节点的前一个结点
- cur = dummyhead
- while(n)
- cur = cur.next;
- n--;
- newNode.next=cur.next;
- cur.next=newNode;
- size++;
第n个节点的删除
- 判断n的合法性
- cur= dummyhead;
- while(n)
- cur = cur.next;
- n--;
- cur.next=cur.next.next;
- return dummyhead.next;
class ListNode{ int val; ListNode next; ListNode(){} ListNode(int val){ this.val = val; }}class MyLinkedList {//带有头结点的链表 //容量大小 int size; //虚拟头结点 ListNode dummyhead; public MyLinkedList() { //初始化单链表 size = 0; dummyhead = new ListNode(0); } public int get(int index) { if(index < 0 || index >= size){ return -1; } ListNode current = dummyhead; while(index >= 0){ current = current.next; index --; } return current.val; } public void addAtHead(int val) { ListNode current = dummyhead; ListNode target = new ListNode(val); target.next = current.next; current.next = target; size++; } public void addAtTail(int val) { ListNode current = dummyhead; while(current.next != null){ current = current.next; } ListNode target = new ListNode(val); target.next = null; current.next = target; size++; } public void addAtIndex(int index, int val) { if(index < 0 || index >= size + 1){ return; } ListNode current = dummyhead; while(index > 0){ current = current.next; index--; } ListNode target = new ListNode(val); target.next = current.next; current.next = target; size++; } public void deleteAtIndex(int index) { if(index < 0 || index >= size){ return; } ListNode current = dummyhead; while(index > 0){ current = current.next; index--; } current.next = current.next.next; size--; }}/** * Your MyLinkedList object will be instantiated and called as such: * MyLinkedList obj = new MyLinkedList(); * int param_1 = obj.get(index); * obj.addAtHead(val); * obj.addAtTail(val); * obj.addAtIndex(index,val); * obj.deleteAtIndex(index); */
反转链表(力扣206.)
- 遍历数组+头插法
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next) { this.val = val; this.next = next; } * } */class Solution { public ListNode reverseList(ListNode head) { // ListNode pummyhead = new ListNode(); // pummyhead.next = head; if(head == null){ return null; } ListNode from = head.next; ListNode targetPummyHead = new ListNode(); ListNode current = targetPummyHead; while(head != null){ head.next = targetPummyHead.next; targetPummyHead.next = head; head = from; if(from != null){ from = from.next; }else{from = null;} } return targetPummyHead.next; }}
- 双指针写法
- 初始化:cur = head;pre=null;
- 遍历链表:while(cur != null)
- 需要一个临时指针temp = cur.next
- cur.next=pre;
- pre=cur;
- cur=temp
- return pre;
class Solution { public ListNode reverseList(ListNode head) { //双指针思路 //初始化 ListNode pre = null; ListNode cur = head; while( cur != null){ ListNode temp = cur.next; cur.next = pre; pre = cur; cur = temp; } return pre; }}
- 递归算法
- reverse(cur,pre){
- if(cur == null)return pre;//此时终止
- temp = cur.next;
- cur.next=pre;
- reverse(temp,cur)}
- //使用:return reverse(head,null);
其实内核解法与双指针解法相同
class Solution { public ListNode reverseList(ListNode head) { return reverse(null,head); } public ListNode reverse(ListNode pre,ListNode current){ if(current == null){ return pre;//递归的终止条件为current为null } ListNode temp = current.next;//临时节点暂存 current.next = pre; return reverse(current,temp); }}
关键词:
-
-
-
-
代码随想录算法训练营第三天|力扣203.移除链表元素、力扣707.设计链表、力扣206.反转链表
【设计原则】图解何为依赖倒置
今年暑期档总票房突破120亿
儿子考上北大 奶茶店主送2000杯奶茶 学生:沾沾喜气
少女连续数日高烧不退确诊“接吻病” 医生科普:病毒感染引起
JFrame一些基础小知识
占用应急车道 深圳一宝马男连着两天被后车拍照举报:12分罚款6000
2176万人观看 《封神第一部》票房逼近10亿 知名编剧:第二部比第一部好看至少十倍
大众被曝将使用小鹏旧平台 明年开始向小鹏支付“技术费”
姚振华,又输了!
J.D.Power发布汽车保值率排行榜:日系车屠榜 飞度保值堪比保时捷
自主知识产权!“新舟”60灭火机平台首飞成功:运输、灭火全能王
北京瑞蚨祥(关于北京瑞蚨祥的介绍)
国人自己的操作系统!华为鸿蒙OS 4.0下周发布:官方海报大有玄机
史上最贵!iPhone 15系列全系售价曝光 网友:多花钱也得买高配版
华为nova 10 Pro官方翻新机视频开箱:成色接近新机 只要2499元起
全国文化和旅游资源开发工作会议在并召开
docker查看日志:docker service logs 与 docker container logs
硬件管理平台 - 引言(一)
男子开车时跟老婆吵架车瞬间报废 承担事故全部责任:网友感叹
票房近10亿!《封神》进2023年票房榜前十:投资30亿 导演称若失败10年还债
12999元 感谢老黄?英伟达喊你买卡了:公版RTX 4090卷土重来
北大青鸟手提式环保家用小型车载灭火器到手9元:安全可靠
属于数据的属性的是及时性、链接性_以下哪种情况属于属性错放
瘫痪男子大脑植入芯片:触觉恢复
警惕“杜苏芮”台风:这些用电常识不可忽视
TCL中环公示单晶硅片价格 上调3.5%-5.2%不等
Go语言中init函数执行的顺序
专家:肥胖人群的肥胖程度越来越高
韩国室温超导是突破还是乌龙?专家解读
win11下docker安装常用中间件-Redis
太平天国进入南京以后,确实犯了很多错误,但是也没必要妖魔化太平天国吧?
电影《热烈》首映日当晚票房破2亿!导演大鹏说把片酬给邓超了
太炫了!索泰ChinaJoy 2023展出多款限量显卡
跨越万里的双向奔赴!父母不懂英语 从县城出国看女儿
车辙是什么意思(车辙解释)
[算法笔记] DFS搜索
从此告别涂硅脂 利民推出新款CPU固态导热硅脂片:一片26.9元
POL连续四年第一!华为已发布新一代Wi-Fi 7万兆园区光网
牧原股份董秘回复:公司目前10万头全线场的人员标准配置为100人左右
民间《中国历代文豪图鉴》出炉:文笔李白唯一100分 白居易6边型战士
台风天在玻璃上贴胶带有用吗?300万粉大V科普:徒劳无益 画蛇添足
2023第二季度快递满意度出炉:第一不出意料
马斯克能忍?国内惊显特斯拉Semi电动卡车仿制品 网友:贴脸输出
虐心(关于虐心简述)
蜜雪冰城阴阳怪气瑞幸?实为网友玩梗:讽刺瑞幸多冰
一儿童高速驾车 副驾驶家长直言:龙王儿子必须得会浮水
10999元!拯救者R9000X 2023发布:AMD中国特供锐龙7 7840H
鼠标垫怎么清洗才能干净 鼠标垫怎么清洗
接口自动化测试框架实战训练营第一天
中华老字号:西安饭庄油泼biangbiang面4.9元/盒史低(不到半价)
车船税没白交 一电动出租车涉水漂过:燃油车主集体看呆
索尼音乐喜迎新人:甄子丹女儿官宣出道 仅19岁
回顾:当吴谢宇举起屠刀时,可否想到母亲养育自己的辛苦?人性之复杂难测,善与恶的较量,永无止境
1000元白菜价电视能买吗?这些信息必须掌握
16家网约车平台被约谈:落实降低过高抽成比例要求
凤凰传奇,幸亏没结婚
【技术实战】Vue技术实战【五】
机器人技术打破国外垄断 巨轮智能总经理意外去世:年仅45岁
这种无理数中的无理数 让数学家直呼根本停不下来
8月8日上市 荣耀MagicBook X Pro锐龙版2023亮相:首发MagicOS 7.2
印尼耍蛇人表演时试图亲吻蛇被咬死 眼镜王蛇有多毒:一滴致命
每周4班 哈尔滨至俄罗斯符拉迪沃斯托克航线复航
2230小尺寸 七彩虹新款PCIe 4.0 SSD上架:1TB售499元
2023暑期档票房破120亿:冠军35亿、《封神第一部》冲到第四
各路厂商争抢年轻用户!ChinaJoy 2023开展:ShowGirl小姐姐依然亮眼
VSCode中的快捷键
《中国碳捕集利用与封存年度报告(2023)》发布
不是抖音的错 东方甄选回应直播间被关:自己不小心出问题 积极整改
OPPO Reno10 Pro英雄联盟定制礼盒发布:3899元 标配16GB内存
为什么再度降息十分必要?
app直播源码平台开发防护技术鉴权功能的部署
至少能用30年 美国研发出永久性电池:不爆炸不起火
iPhone 15或全系搭载4800万像素镜头 标准版再度提升
羽毛球——日本公开赛:何冰娇晋级半决赛
2023年度第九批重点作品版权保护预警名单公布
推特App图标正式变为X:马斯克宣布月活用户创新高
尴尬!多地新能车充电费涨幅达87% 一个月多花500元:桩企盈利难题待解
积极采取措施 水务部门“抢时间”做好台风防御
初中生同乘摩托车撞墙致2死1伤 监控曝光:像一道光一闪而至 网友直呼痛心
高铁动车的空调是怎么调温度的?官方揭秘:比家里空调复杂多了
汉庭如家房价直逼香格里拉 一晚住宿近千元:城市住宿费疯涨
机械硬盘戏剧性场面:没人买销量暴跌 厂商坚持要涨价
欧央行“九连加”难解通胀压力
台风杜苏芮过境厦门海边到处是海鲜:海边现“生蚝滩” 市民成桶往家扛
手机卖不动的最坏日子过去了 联发科:不会更差
星环设计回归 华为Mate60系列最新曝光 高端感拉满!
读发布!设计与部署稳定的分布式系统(第2版)笔记25_互联层之路由和服务
亚冠:天津权健被6球屠戮,这个锅应该谁来背?
代码随想录算法训练营第二天|力扣977.有序数组的平方、力扣209.长度最小的子数组、力扣59.螺旋矩阵
小米新款智能触控笔曝光 名为Focus Pen 已获蓝牙认证
科学家“复活”了46000年前的虫子!人类冷永生有戏了?
中国人制造的“歪嘴龙王”:老外一天不看就浑身难受
29块9的低配AirTag:让我感受到了平替的快乐
今年最热门的国产旗舰!华为Mate 60未发先火
2023南昌大学科学技术学院录取分数线是多少 2023南昌大学科学技术学院录取规则
股票行情快报:隆扬电子(301389)7月28日主力资金净买入397.58万元
《道德文明与人体/逻辑/知识》山林子谈人类道德文明诗286-288
VMPWN的入门级别题目详解(二)
《英雄联盟》LPL冒泡赛EDG确定8月6日开打!赢了就进S13全球总决赛