- 博客(7)
- 收藏
- 关注
原创 707. 设计链表(LeetCode)
707. 设计链表设计链表的实现。您可以选择使用单链表或双链表。单链表中的节点应该具有两个属性:val和next。val是当前节点的值,next是指向下一个节点的指针/引用。如果要使用双向链表,则还需要一个属性prev以指示链表中的上一个节点。假设链表中的所有节点都是 0-index 的。在链表类中实现这些功能:get(index):获取链表中第index个节点的值。如果索引无效,则返回-1。addAtHead(val):在链表的第一个元素之前添加一个值为val的节点。插入...
2022-01-30 21:45:56
222
原创 206. 反转链表(LeetCode)
206. 反转链表给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。示例 1:输入:head = [1,2,3,4,5]输出:[5,4,3,2,1]示例 2:输入:head = [1,2]输出:[2,1]示例 3:输入:head = []输出:[]提示:链表中节点的数目范围是 [0, 5000]-5000 <= Node.val <= 5000进阶:链表可以选用迭代或递归方式完成反转。你能否用两种方法解决这道题?...
2022-01-30 21:31:08
210
原创 34. 在排序数组中查找元素的第一个和最后一个位置(LeetCode)
34. 在排序数组中查找元素的第一个和最后一个位置(LeetCode)给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。进阶:你可以设计并实现时间复杂度为O(log n)的算法解决此问题吗?示例 1:输入:nums = [5,7,7,8,8,10], target = 8输出:[3,4]示例2:输入:nums = [5,7,7,8,8,10]...
2022-01-29 15:54:51
235
原创 704. 二分查找(LeetCode)
704. 二分查找(Leetcode)给定一个n个元素有序的(升序)整型数组nums 和一个目标值target ,写一个函数搜索nums中的 target,如果目标值存在返回下标,否则返回 -1。示例 1:输入: nums = [-1,0,3,5,9,12], target = 9输出: 4解释: 9 出现在 nums 中并且下标为 4示例2:输入: nums = [-1,0,3,5,9,12], target = 2输出: -1解释: 2 不存在 nums ...
2022-01-29 15:48:03
7211
转载 数据基础知识(算法)
本文章用于记录自己所学的内容,方便自己回顾复习。数组在内存中的存储方式:数组是存放在连续内存空间上的相同类型数据的集合,即数组中的相同数据类型的元素存储在内存空间上的连续内存单元中。数组可以通过下标索引的方式获取到下标对应的元素。举一个字符数组的例子,如下图所示:数组的主要特性:数组的下标都是从0开始。数组在内存空间中的地址是连续的。由于数组在内存空间中的地址是连续的,故我们在在删除或者增添元素的时候,就难免要移动其他元素的地址,时间复杂度相比链表来说较高。例如当删除下标为3的元素,需要
2022-01-27 17:03:51
578
转载 空间复杂度(学习总结)
什么是空间复杂度呢?空间复杂度是对一个算法在运行过程中占用内存空间大小的量度,记做S(n)=O(f(n)。空间复杂度(Space Complexity)记作S(n) 依然使用大O来表示。利用程序的空间复杂度,可以对程序运行中需要多少内存有个预先估计。关注空间复杂度有两个常见的相关问题1、空间复杂度是考虑程序(可执行文件)的大小么?很多人都会混淆程序运行时内存大小和程序本身的大小。这里强调一下空间复杂度是考虑程序运行时占用内存的大小,而不是可执行文件的大小。2、...
2022-01-26 21:15:16
5593
转载 时间复杂度(学习总结)
什么是时间复杂度?时间复杂度是用来干什么?时间复杂度是一个函数,用来定性描述算法的运行时间。假设算法的问题规模为n,那么操作单元数量便用函数f(n)来表示,随着数据规模n的增大,算法执行时间的增长率和f(n)的增长率相同,这称作为算法的渐近时间复杂度,简称时间复杂度,记为 O(f(n))。 在软件开发中,时间复杂度方便开发者估算当前程序运行的一般时间。数据规模对时间复杂度有什么影响? 从下图中可以看出不同算法的时间复杂度在不同数据输入规模下...
2022-01-26 20:46:54
3388
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅