自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 88.合併兩個有序數組

既然nums1, nums2和排列後的數組都要求有序,那不妨從最後一位也就是最大的元素開始進行處理。比較nums1和nums2中的最後一個元素,將較大的那一個放在nums1的最後一位。2.nums1的初始長度即為m + n。先上一個作弊玩法,將nums2插入nums1中後直接排序。3.nums1後n個元素為0不用考慮。最终,合并后数组不应由函数返回,而是存储在数组。沒什麼好講的也沒什麼難度,下面講正經的解法。个元素表示应合并的元素,后。中,使合并后的数组同样按。

2024-01-09 09:49:31 334

原创 80.刪除有序數組中的重複項

给你一个有序数组nums,请你原地删除重复出现的元素,使得出现次数超过两次的元素只出现两次,返回删除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。解法與要點: 題目很貼心的強調了“原地”刪除,所以刪除元素後整個數組要左移,使用快慢指針容易解決。遍歷數組檢查其中元素是否應該保留,如果應該保留則移動到指定位置。其中慢指針表示處理後的數組長度,快指針表示已經檢查過的數組長度。即nums[fast]為待檢查的第

2024-01-08 18:43:55 345

原创 443.回旋镖的数量

2.随后遍历其他点,并使用哈希表存储其他点到该点的距离与该距离出现的次数。其中距离作为key,出现次数作为value。出现次数也就是该距离的点的数量。所谓回旋镖即为找出三个能形成等腰三角形的点在points中,因此以顶点为基准进行枚举查找是比较容易实现的。3.因为题目要求考虑元组的顺序,因此需要在点数量中取出两个,是简单的排列组合m * (m-1)1.首先遍历points,将遍历到的点作为三角形顶点,即为回旋镖的“拐点”。返回平面上所有回旋镖的数量。之间的欧式距离相等(

2024-01-08 09:36:41 351

原创 19. 删除链表的倒数第 N 个结点

例如,在本题中,如果我们要删除节点 y,我们需要知道节点 y 的前驱节点 x,并将 x 的指针指向 y 的后继节点。首先遍历列表得到链表长度L,随后再从头节点遍历一次,遍历到L - n + 1个节点时,该节点即为要删除的节点。为了方便删除操作,可以从哑节点开始遍历,当遍历到L - n + 1节点时,它的下一个节点即为要删除的节点,使当前节点.next = 当前节点.next.next即可。栈为后进先出的数据结构,因此出栈的第n个节点即为要删除的节点,并且当前栈顶的节点即为要删除节点的前置节点。

2023-12-25 17:41:24 611

原创 1276. 不浪费原料的汉堡制作方案

那么用此时的番茄片数除以2,即为巨无霸汉堡个数,用奶酪片即汉堡总数减去巨无霸汉堡数即为小皇堡个数。2.考虑番茄片数:一个汉堡最少也要两片番茄,因此如果番茄片总数小于二倍的奶酪数即总汉堡数,则奶酪片一定不会全部被消耗。这里奶酪片相当于头数,即总汉堡个数,番茄片相当于腿数。3.考虑奶酪片数:一个汉堡最多要四片番茄,因此如果番茄片数大于四倍奶酪片数,则番茄片一定不会被全部消耗。([巨无霸汉堡总数,小皇堡总数])的格式返回恰当的制作方案,使得剩下的番茄片。,分别表示番茄片和奶酪片的数目。如果无法使剩下的番茄片。

2023-12-25 08:42:30 358

原创 1962. 移除石子使总数最小

因为python的headp库中只能建立小顶堆,所以需要将数组中所有元素取负值,然后排列成小顶堆,最后再取负值复原即可,大致思路与我想到的基本相同,将最大值取出做处理再放回,主要障碍是我不熟悉堆相关的操作。拓展了关于堆的知识点,在此之前我想到的只是找出数组中最大值,然后将其//2即可。理论上可行,只是实操会超过时间限制。后来使用大顶堆得以解决。堆石子中的石子数量。次操作后,剩下石子的。石子多次执行此操作。

2023-12-23 09:42:59 314 1

原创 15.三数之和

先排序再遍历,用双指针。设置k为最左端指针,i与j分设(k, len(nums)-1)两端,s为三指针对应值相加的结果。3.k > 0,即k已经移动过,且nums[k] == nums[k-1],即相邻两个值相等,则按照题目要求直接跳过,对三个指针均适用。1.当nums[k] > 0时直接跳出循环,因为数组有序,最左端都已经大于0,则后面无论怎么相加必定不会等于0.答案中不可以包含重复的三元组。,判断是否存在三元组。

2023-12-21 14:38:04 365

原创 11.盛水最多的容器

我第一次动手做的时候想的是,只要取其中的最长板然后挨个遍历就行了,因为容量取决于最短的一块,因此只要把最长板固定,剩下的每一块板都有机会使用到。若向内 移动长板 ,水槽的短板 min(h[i],h[j])min(h[i], h[j])min(h[i],h[j])​ 不变或变小,因此下个。若向内 移动短板 ,水槽的短板 min(h[i],h[j])min(h[i], h[j])min(h[i],h[j]) 可能变大,因此下个水。同时判断指针对应的两块板的长度,移动较短的那块。返回容器可以储存的最大水量。

2023-12-20 13:53:24 387

原创 8.字符串转换整数

第 2 步:"4193 with words"(当前没有读入字符,因为这里不存在 '-' 或者 '+')由于 "-42" 在范围 [-231, 231 - 1] 内,最终结果为 -42。第 1 步:"4193 with words"(当前没有读入字符,因为没有前导空格)由于 "42" 在范围 [-231, 231 - 1] 内,最终结果为 42。第 2 步:"42"(当前没有读入字符,因为这里不存在 '-' 或者 '+')第 1 步:"42"(当前没有读入字符,因为没有前导空格)"(读入 "42")

2023-12-20 10:45:39 351

原创 7.整数反转

解法与要点:使用常规的取模与降位运算,进行处理时为排除正负号的影响我选择取x的绝对值,只要在最后返回时根据x本身的正负再进行判断就可以了。如果反转后整数超过 32 位的有符号整数的范围。给你一个 32 位的有符号整数。中的数字部分反转后的结果。要点不多,代码一看就懂。

2023-12-19 18:10:10 342

原创 6.N字形变换

解法与要点:给字符串s中每个字符都设置一个下标,从0到numRows,然后从numRows依次递减直到0,比如s=“HelloWorld”,numRows=3,那么每个字符的下标就是1232123212。接下来要做的就是按照下标的自然顺序将字符拼接到一起,所有1的拼在一起,2的拼在一起...然后再将拼接起来的字符串再拼在一起,形成一个完整的字符串,即符合题目要求。根据传入的numRows,将字符串s按照顺序从上到下排列,当行数达到numRows时,再由下到上排列,如此反复。

2023-12-19 14:24:54 332

原创 1901.寻找峰值II

要知道,一个数组中的最大值一定是这个数组的峰值(昨天的取巧解法),那么在判断时只需要判断上下格子与当前格子值的关系即可,既然我们每一行都取这一行的最大值,那么左右格子的值就无需做判断了,一定是没有最大值大的。贴一段自己写的初版废案,用于警示自己,与正解的区别在于没有想到当前行最大值即为峰值,无需再与左右格子做判断,不做展开。index(max(mat[i])取的是这一行中最大值的索引,即为所在列的索引。max(mat[i])取的是这一行中最大的值。mat[i]取的是矩阵中的一行。一个 2D 网格中的。

2023-12-19 10:41:55 338

原创 162.寻找峰值

重点在于,如果a < b,那么i左侧也就是比i小的索引是不需要考虑到的,因为i的右侧一定会有一个峰值,a已经比b大了,那么arr[i+2]无论比b大还是小都有机会找出峰值。峰值的值一定大于它两侧的值,也就是arr[i-1] < arr[i] > arr[i+1],不难理解吧。如果arr[mid] < arr[mid + 1],则下标向右走,舍弃[l, mid]这一段范围,l = mid + 1,反之同理,与普通二分查找类似,不做展开。如果a < b,则说明当前i处于函数的上坡,这时i应该右移,反之同理。

2023-12-19 09:02:40 313

原创 2.两数相加

1.定义一个carry来存储需要进位的值,如果遍历后进位值为1,则在链表最后新增一个1。当两数相加有进位时,使用sum1//10来获得carry。正确处理两数之和sum1。2.每一位计算的同时要考虑上一位进位的问题,当前位计算完后同样需要更新进位值。重点:为什么最后返回的是prev.next,为什么它是真正的头节点head。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。的链表,表示两个非负的整数。请你将两个数相加,并以相同形式返回一个表示和的链表。的方式存储的,并且每个节点只能存储。

2023-12-18 19:16:07 364

原创 5.最长回文子串

遍历每一段字符串,如果是回文串且比上一段回文串长度要长,则赋值给max_str。没有暴力破解不能解决的问题,不过耗时太长,时间复杂度为O(n^3)。如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。明天再更剩下两种方法,今天算力耗尽了。"aba" 同样是符合题意的答案。

2023-12-18 18:53:22 269

原创 3.无重复字符的最长子串

一旦s[i]为重复元素,则需要将左边界向右移动直至窗口内无与s[i]相同的元素为止。要一位一位的移动left,而不是直接将left设置为i-1,防止无辜元素被移除。当s[i]不是重复元素时,右边界i会随着for循环逐渐右移。使用while循环,条件就是s[i]在集合中。整个窗口左边界为left,右边界则为i。,请你找出其中不含有重复字符的。想象一个一直移动的窗口。

2023-12-18 14:17:48 341

原创 TCP/IP协议

TCP/IP简单介绍

2022-07-22 10:43:07 462 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除