会员
周边
新闻
博问
闪存
众包
赞助商
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
偶遇的
博客园
首页
新随笔
联系
订阅
管理
2021年5月24日
排序链表
摘要: 给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。 这个题逻辑上不算复杂,写起来异常复杂,首先将原表头作为新表头,然后依次取原表里的结点与新表的结点比较,如果小于新表头就头插。大于新表头则遍历新表的结点找到合适的位置插入,特殊情况遍历到表尾也不满足则尾插,然后迭代原表结点。
阅读全文
posted @ 2021-05-24 21:07 偶遇的
阅读(71)
评论(0)
推荐(0)
2021年5月22日
编写一个函数,检查输入的链表是否是回文的。
摘要: 示例 1: 输入: 1->2 输出: false 示例 2: 输入: 1->2->2->1 输出: true 分析找出链表的中间结点,将中间结点以后的结点逆置,比较原链表和逆置后的链表即可得出结果 struct ListNode* slow=head; struct ListNode* fast=h
阅读全文
posted @ 2021-05-22 21:44 偶遇的
阅读(212)
评论(0)
推荐(0)
2021年5月21日
分割(隔)链表
摘要: 给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。 你应当 保留 两个分区中每个节点的初始相对位置。 受哨兵结点启发,新建两个伪头,然后将比较结果分别后插到两个链表中,最后将第二个链表后插到第一个链表,需要注意的是
阅读全文
posted @ 2021-05-21 10:22 偶遇的
阅读(41)
评论(0)
推荐(0)
2021年5月20日
合并两个排序的链表
摘要: 输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。 首先考虑将两个链表的第一个元素比较拿到新链表的头结点,作为新链表的头,然后将两个链表逐个比较取较小结点放在新链表的后面,直至有链表出现NULL。 学习单链表的时候写头插尾插头删尾删都可以顺利写出,没想到单链表的题目比较刁钻,
阅读全文
posted @ 2021-05-20 20:51 偶遇的
阅读(113)
评论(0)
推荐(0)
2021年5月14日
删除排序数组中的重复项
摘要: 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后新数组的长度。不要使用额外的数组空间。 分析题目和上一个有点类似,考虑用双重下标的方法重组数组。 #include <stdio.h> int removeDuplicates(int* nums,int numsS
阅读全文
posted @ 2021-05-14 19:40 偶遇的
阅读(127)
评论(0)
推荐(0)
原地移除数组中的所有元素Val,要求时间复杂度O(n),空间复杂度为O(1)
摘要: 分析可以遍历数组的同时,如果发现目标元素忽略,不是目标元素直接将该元素下标置0,依次达到覆盖所有目标元素的目的。 #include <stdio.h> int removeElement(int* nums,int numsSize,int val) { int i; int n=0; for(i=
阅读全文
posted @ 2021-05-14 15:28 偶遇的
阅读(147)
评论(0)
推荐(0)
2021年5月13日
只出现一次的数字
摘要: 给定一个整型数组nums,其中恰好有两个元素出现一次,其余元素都出现两次,找出只出现一次的那两个元素。 分析有道类似的题目是只有一个元素出现一次,那么利用异或的特性,相同数字异或为0,异或结果不受顺序影响,将所有元素异或在一起最终结果就是只出现一次的元素。本题改成了两个元素未重复,如果将所有元素异或
阅读全文
posted @ 2021-05-13 19:48 偶遇的
阅读(64)
评论(0)
推荐(0)
消失的数字
摘要: 数组arr包含从0到n的所有整数,但是其中缺少了一个,请编写代码找出缺失的那个整数。要求时间复杂度O(N) 从0到n应该有n+1个数字,缺少一个那么该数组元素个数为n。 思考1: 假如将该数组元素全部相加所得到的和,与正常不缺少该数字的数组之和相减,那么得到的数字就是缺少的数字。 假设该数组为arr
阅读全文
posted @ 2021-05-13 10:28 偶遇的
阅读(129)
评论(0)
推荐(0)
公告