leetcode算法题--分隔链表
原题链接:https://leetcode-cn.com/problems/split-linked-list-in-parts/
vector<ListNode*> splitListToParts(ListNode* root, int k) {vector<ListNode*> ans;ListNode *p=root;int len=0;while(p!=NULL){//先计算出链表长度len++;p=p->next;}p=root;if(len<k){//如果长度比k小,直接分隔并且返回while(p!=NULL){ListNode *tmp=p;p=p->next;tmp->next=NULL;ans.push_back(tmp);}int c=k-len;while(c--){ans.push_back(NULL);}return ans;}int x=len/k;//子链表长度int y=len%k;//剩余的节点数ListNode *q=root;p=root;while(p!=NULL){int count=x;while(count>1){count--;q=q->next;}if(y>0){//将剩余节点平均分配给前面的子链表q=q->next;}ListNode *tmp=p;p=q->next;q->next=NULL; q=p;ans.push_back(tmp);y--;}return ans;
}
改进
vector<ListNode*> splitListToParts(ListNode* root, int k) { ListNode *p=root;int len=0;while(p!=NULL){len++;p=p->next;}vector<ListNode*> ans(k,NULL);//提前设置ans空间,并且初始化为NULLint x=len/k;int y=(k<=len)?len%k:0;//y是剩余节点,如果k>len,将没有剩余节点ListNode *q=root;p=root;int i=0;while(p!=NULL){int count=x;while(count>1){count--;q=q->next;}if(y>0){q=q->next;}ListNode *tmp=p;p=q->next;q->next=NULL; q=p;ans[i++]=tmp;y--;}return ans;
}
leetcode算法题--分隔链表相关推荐
- leetcode算法题--分隔链表★
原题链接:https://leetcode-cn.com/problems/partition-list/ 1.双指针 ListNode* partition(ListNode* head, int ...
- leetcode算法题--重排链表★
原题链接:https://leetcode-cn.com/problems/reorder-list/ 1.map void reorderList(ListNode* head) {map<i ...
- leetcode算法题--排序链表★
原题链接:https://leetcode-cn.com/problems/sort-list/ 1.归并排序(递归版) ListNode* sortList(ListNode* head) {if( ...
- leetcode算法题--相交链表
原题链接: https://leetcode-cn.com/problems/intersection-of-two-linked-lists/ https://leetcode-cn.com/pro ...
- leetcode算法题--环形链表 II★
原题链接:https://leetcode-cn.com/problems/linked-list-cycle-ii/ 1.map ListNode *detectCycle(ListNode *he ...
- leetcode算法题--有序链表转换二叉搜索树★
原题链接:https://leetcode-cn.com/problems/convert-sorted-list-to-binary-search-tree/ 1.二分法+递归 TreeNode* ...
- leetcode算法题--反转链表 II★
原题链接:https://leetcode-cn.com/problems/reverse-linked-list-ii/ 1.头插法 ListNode* reverseBetween(ListNod ...
- leetcode算法题--旋转链表
原题链接:https://leetcode-cn.com/problems/rotate-list/ 1.双指针法 相关题目:删除链表的倒数第N个节点 ListNode* rotateRight(Li ...
- leetcode算法题--删除链表的倒数第N个节点
原题链接:https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list/ 双指针法 ListNode* removeNthFrom ...
最新文章
- 谈谈离职和跳槽(copy)
- azure java_Azure File服务(5): Java开发
- lucene索引文件大小优化小结
- 并发编程-26 高并发处理手段之服务降级与服务熔断 + 数据库切库分库分表
- asp关于从utf8页面到gb2312页面出现乱码得解决
- 读“苹果上周发布了Mac OS X Mountain Lion系统”新闻的感想
- pyculiarity解决报错ValueError: data must be a 2 column data.frame, with thefirst column...
- 汽车故障检测仪计算机教程,如何使用汽车故障诊断仪进行汽车维修
- 流水线、超流水线、超标量(superscalar)技术对比
- android7.1.2 xposed,安卓7.1 xposed框架
- 战矛在线Java_战矛在线职业选择攻略 最强职业推荐
- VUE发送POST请求自动附带本地地址
- 服务器的网络不稳定是什么原因,家里网络不稳定是什么原因
- win10下速腾聚创RS-Lidar-32配置教程
- Python薅羊毛脚本
- leetcode题目: 数字的补数 的C语言解法
- 访问限制和身份验证和虚拟主机配置的三种方式
- uni-app二维码、条形码扫码自定义
- android java json_探究Android系统中解析JSON数据的方式
- 灰度共生矩阵特征提取步骤_灰度共生矩阵纹理特征提取的Matlab实现