题解
| struct ListNode* removeNodes(struct ListNode* head){ |
| if(head->next == NULL) |
| return head; |
| struct ListNode* after = removeNodes(head->next); |
| if(after->val > head->val) return after; |
| head->next = after; |
| return head; |
| } |
思路二:暴力链表数组排序
| struct Bucket_node { |
| int num; |
| int val; |
| struct ListNode* address; |
| }; |
| int cmp(const void* e1, const void* e2) |
| { |
| struct Bucket_node a1 = *((struct Bucket_node*)e1), a2 = *((struct Bucket_node*)e2); |
| if(a1.val != a2.val) |
| return a2.val - a1.val; |
| else |
| return a1.num - a2.num; |
| } |
| |
| struct ListNode* removeNodes(struct ListNode* head){ |
| struct Bucket_node bucket[100000]; |
| struct ListNode* ptr = head; |
| int total = 0; |
| while(ptr) |
| { |
| bucket[total].num = total; |
| bucket[total].val = ptr->val; |
| bucket[total].address = ptr; |
| total++; |
| ptr = ptr->next; |
| } |
| qsort(bucket, total, sizeof(struct Bucket_node), cmp); |
| head = bucket[0].address; |
| ptr = bucket[0].address; |
| int ptr_num = bucket[0].num; |
| for(int i = 1; i < total; i++) |
| { |
| if(bucket[i].num > ptr_num) |
| { |
| ptr->next = bucket[i].address; |
| ptr_num = bucket[i].num; |
| ptr = ptr->next; |
| } |
| } |
| return head; |
| } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效