人生加速器法解题
LT147 指针数组思路

直接操作结构体指针的话,会很慢,所以一种比较笨拙的方法油然而生(我真是一根筋):创立一个指向每一个节点的指针数组,然后比较数组的值,交换指针,来实现排序。(不怕麻烦 + 给自添堵 第一名 )我愿称其为:人生加速器法。
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* insertionSortList(struct ListNode* head){
struct ListNode* p = head;
int length = 0;
while(p){
++length;
p = p->next;
}
struct ListNode** arr = (struct ListNode**)malloc(sizeof(struct ListNode*)*length);
p = head;
for(int i=0; i<length; ++i){
arr[i] = p;
p = p->next;
/*
printf("%d", (arr[i])->val);
if(i!=length-1){
printf(", ");
}
*/
}
//printf("\n");
for(int i=0; i<length; ++i){
for(int j=0; j<length-1-i; ++j){
if(arr[j]->val > arr[j+1]->val){
struct ListNode* temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
p = arr[0];
//printf("%d", p->val);
for(int i=1; i<length; ++i){
p->next = arr[i];
//printf("%d", p->next->val);
p = p->next;
}
return p;
}
test:
#include <stdio.h>
#include <stdlib.h>
struct ListNode {
int val;
struct ListNode *next;
};
void insert(struct ListNode* head, int num){
//struct ListNode* temp = (struct ListNode*)malloc(sizeof(struct ListNode));
if(head == NULL){
struct ListNode* temp = (struct ListNode*)malloc(sizeof(struct ListNode));
head = temp;
head->val = num;
head->next = NULL;
}else{
struct ListNode* p = head;
while(p->next){
p = p->next;
}
struct ListNode* temp = (struct ListNode*)malloc(sizeof(struct ListNode));
p->next = temp;
temp->val = num;
temp->next = NULL;
}
}
void display(struct ListNode* head){
struct ListNode* p = head;
while(p){
printf("%d, ", p->val);
p = p->next;
}
}
int main(){
struct ListNode* list = (struct ListNode*)malloc(sizeof(struct ListNode));
list->next = NULL;
list->val = 0;
insert(list, 1);
insert(list, 2);
insert(list, 3);
display(list);
return 0;
}
2021-08-03_3:54:02 更新:爷先去睡个觉,回来优化。
刚躺下就想到bug在哪里了,leetcode提示我是时间超时,仔细通过printf大法检查的时候,发现结果既然是正确的,那会不会是终止条件没有给对,顺着这个思路果然是最后一个节点忘记让他的下一项为空了,于是在 line42 最后一个for循环结尾加上:
if(i == length-1){
p->next = NULL;
}
即可解决问题,提交运行,结果通过~虽然又慢又长,但这个方法个人感觉挺牛逼的(并不)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了