IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 剑指offer-数据结构一 -> 正文阅读

[数据结构与算法]剑指offer-数据结构一

大家好,我是Nefelibat.

在博客上记录算法笔记,是因为想push自己每天坚持刷几道算法题,同时也希望能把自己总结到的经验分享给大家,希望大家阅读愉快😊

目录

一、数组

题目:不修改数组找出数组中任意一个重复的数字

思路

代码

题目:在一个二维数组中,每一行和每一列按照从上到下和从左 到右递增的顺序排序。请输入一个这样的二维数组和一个数字,并判断这个数字在数组中是否存在。

思路

代码

?二、字符串

题目:替换空格

思路

代码

题目:有两个排序的数组A1和A2,内存在A1的末尾有足够多的业余空间容纳A2,将A2中的所有数字插入A1中,并且所有的数字是排序的

思路

三、链表

链表增加节点

思路

代码

链表删除节点

思路

代码


一、数组

题目:不修改数组找出数组中任意一个重复的数字

思路

使用二分法,找出数组中中间大小的数字middele,以middle为界限,统计大于middle的数字个数和小于middle的数字个数,如果其中一个大于数组个数的一半,那么必定存在重复的数字。

代码

测试用例

题目:在一个二维数组中,每一行和每一列按照从上到下和从左 到右递增的顺序排序。请输入一个这样的二维数组和一个数字,并判断这个数字在数组中是否存在。

思路

我们应该从二维数组的哪个位置选择一个数与查找的数字比较?经过分析,我们发现,只有选择二维数组右上角或者左下角的数字才不会重复查找。如下图是查找数字7的过程。

代码

?二、字符串

题目:替换空格

考虑的问题:若在原来的字符串上替换,有可能覆盖字符串后面的内存,替换要保证内存足够

思路

先遍历字符串,求得字符串的长度,并计算有几个空格,空格数*替换字符长度+字符串的长度=替换后字符串的长度。从后往前替换。

代码

题目:有两个排序的数组A1和A2,内存在A1的末尾有足够多的业余空间容纳A2,将A2中的所有数字插入A1中,并且所有的数字是排序的

思路

在合并两个字符串,从前往后复制需要移动字符多次,从后往前复制,可以减少移动的次数。

三、链表

链表是一种动态的数据结构,在创建链表时不需要知道链表的长度。插入节点的时候,需要为节点分配新的内存。调整指针的指向来确保新节点插入到链表中,由于没有闲置的内存,链表的空间效率比数组高。

链表增加节点

思路

考虑链表是否为空,如果为空,头节点指向新节点,如果不为空,定义一个指向头节点的指针,遍历链表,直到遍历到节点指向空,然后将节点的下一个指针指向新建的节点。

代码

链表删除节点

思路

?如果头指针为空,就返回空,新建一个将要被删除的指针为空,如果头节点的值为删除节点的值,将删除指针指向头结点,头节点往下移动一个位置。如果要删除的节点不是头结点,新建一个指向头结点的指针,while指针的下一个值不为要删除的值,遍历到最后一个节点,如果找到,将待删除的节点的指针指向新建的节点的下一个值,新建节点的下一个值为新建节点的下一个值的下一个值。最后,如果待删除节点指针不为空格,就delete和这个节点,将待删除节点置为空。

代码

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-06-26 17:03:41  更:2022-06-26 17:05:09 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 23:34:55-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码