【每日刷题】Day22

【每日刷题】Day22

🥕个人主页:开敲🍉

🔥所属专栏:每日刷题🍍

🌼文章目录🌼

[1. 1669. 合并两个链表 - 力扣(LeetCode)](#1. 1669. 合并两个链表 - 力扣(LeetCode))

[2. 11. 盛最多水的容器 - 力扣(LeetCode)](#2. 11. 盛最多水的容器 - 力扣(LeetCode))

[3. 148. 排序链表 - 力扣(LeetCode)](#3. 148. 排序链表 - 力扣(LeetCode))

1. 1669. 合并两个链表 - 力扣(LeetCode)

//思路:使用两个指针定位到需要删除的数据的两端,再使用两个指针free掉中间的数据,随后再将链表连接即可

typedef struct ListNode LN;

struct ListNode* mergeInBetween(struct ListNode* list1, int a, int b, struct ListNode* list2)

{

LN* sta = list1;

LN* des = list1;

while(--a)//定位到需要删除的第一个节点的前一个节点

{

sta = sta->next;

}

while(b+1)//定位到需要删除的最后一个节点的后一个节点

{

des = des->next;

b--;

}

LN* pmove = list2;

while(pmove->next)//定位到list2的末尾

{

pmove = pmove->next;

}

LN* pdel = sta->next;

while(pdel!=des)//删除节点

{

LN* pcur = pdel->next;

free(pdel);

pdel = pcur;

}

sta->next = list2;//连接链表

pmove->next = des;

return list1;

}

2. 11. 盛最多水的容器 - 力扣(LeetCode)

//思路:双指针。分别从数组头尾向中间遍历,每一次遍历较小值为高,算出面积,记录最大的面积返回。

int maxArea(int* height, int heightSize)

{

int ans = 0;

int left = 0;

int right = heightSize-1;

while(left<right)

{

int high = height[left]<height[right]?height[left]:height[right];//较小值为高

int area = (right-left)*high;//算出面积

ans = area>ans?area:ans;记录最大面积

height[left]<height[right]?left++:right--;//将较小的那一边向中间遍历一下

}

return ans;

}

3. 148. 排序链表 - 力扣(LeetCode)

//思路:使用数组将链表中的值存储,使用qsort库函数对数组排序,再将数组中的元素逐个放回链表中,完成链表排序

typedef struct ListNode LN;

int cmp(const void* a,const void* b)

{

return *(int*)a-*(int*)b;

}

struct ListNode* sortList(struct ListNode* head)

{

int arr[50001];

LN* pmove = head;

LN* newhead = head;

int i = 0;

while(pmove)//将链表中的值存储进数组

{

arr[i++] = pmove->val;

pmove = pmove->next;

}

qsort(arr,i,sizeof(int),cmp);//按照升序将数组排序

for(int j = 0;j<i;j++)//再将数组的元素逐个存储回链表

{

newhead->val = arr[j];

newhead = newhead->next;

}

return head;

}

相关推荐
_OP_CHEN6 小时前
【算法基础篇】(五十七)线性代数之矩阵乘法从入门到实战:手撕模板 + 真题详解
线性代数·算法·矩阵·蓝桥杯·c/c++·矩阵乘法·acm/icpc
天天爱吃肉82186 小时前
【跨界封神|周杰伦×王传福(陶晶莹主持):音乐创作与新能源NVH测试,底层逻辑竟完全同源!(新人必看入行指南)】
python·嵌入式硬件·算法·汽车
im_AMBER6 小时前
Leetcode 114 链表中的下一个更大节点 | 删除排序链表中的重复元素 II
算法·leetcode
凉、介6 小时前
VMware 三种网络模式(桥接 / NAT / Host-Only)原理与实验解析
c语言·网络·笔记·操作系统·嵌入式·vmware
xhbaitxl7 小时前
算法学习day38-动态规划
学习·算法·动态规划
多恩Stone7 小时前
【3D AICG 系列-6】OmniPart 训练流程梳理
人工智能·pytorch·算法·3d·aigc
wangjialelele7 小时前
Linux中的进程管理
java·linux·服务器·c语言·c++·个人开发
历程里程碑7 小时前
普通数组----轮转数组
java·数据结构·c++·算法·spring·leetcode·eclipse
pp起床7 小时前
贪心算法 | part02
算法·leetcode·贪心算法
sin_hielo7 小时前
leetcode 1653
数据结构·算法·leetcode