前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Leetcode -1290.二进制链表转整数 -剑指Offer 06.从尾到头打印链表】

【Leetcode -1290.二进制链表转整数 -剑指Offer 06.从尾到头打印链表】

作者头像
YoungMLet
发布2024-03-01 09:31:50
870
发布2024-03-01 09:31:50
举报
文章被收录于专栏:C++/Linux

Leetcode -1290.二进制链表转整数

题目:给你一个单链表的引用结点 head。链表中每个结点的值不是 0 就是 1。已知此链表是一个整数数字的二进制表示形式。请你返回该链表所表示数字的十进制值 。

示例 1: 输入:head = [1, 0, 1] 输出:5 解释:二进制数(101) 转化为十进制数(5)

示例 2: 输入:head = [0] 输出:0

示例 3: 输入:head = [1] 输出:1

示例 4: 输入:head = [1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0] 输出:18880

示例 5: 输入:head = [0, 0] 输出:0

我们的思路是,定义一个sum = 0,每次sum向左移,右边补0,用sum的最低位0去按位或head的val,就能得到val的值,然后head往后走,sum也往左移,继续按位或链表的下一个值,直到head为空;

代码语言:javascript
复制
		int getDecimalValue(struct ListNode* head)
		{
		    //定义sum为0,由于链表中的值不是0就是1
		    //所以每次都用sum的最低位0去按位或上head的val,即可得到val
		    //每次按位或完,head往后走;sum向左移,右边会补0
		    int sum = 0;
		    while (head)
		    {
		        sum <<= 1;
		        sum |= head->val;
		        head = head->next;
		    }
		    return sum;
		}

Leetcode -剑指Offer 06.从尾到头打印链表

题目:输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。

示例: 输入:head = [1, 3, 2] 输出:[2, 3, 1]

限制: 0 <= 链表长度 <= 10000

我们的思路是,先将链表反转,并用count计算链表长度,然后开辟一个数组空间,将反转后的链表的val放到数组中,返回数组;

代码语言:javascript
复制
		int* reversePrint(struct ListNode* head, int* returnSize)
		{
		    //链表为空,长度返回0,返回空
		    if (head == NULL)
		    {
		        *returnSize = 0;
		        return NULL;
		    }
		
		    //count计算链表长度
		    //反转链表
		    int count = 0;
		    struct ListNode* curr = head, * prev = NULL;
		    while (curr)
		    {
		        struct ListNode* next = curr->next;
		        curr->next = prev;
		        prev = curr;
		        curr = next;
		        count++;
		    }
		
		    //开辟一个数组返回
		    //更新返回长度
		    int* p = (int*)malloc(sizeof(int) * count);
		    *returnSize = count;
		
		    //将反转后链表中的val放到数组中
		    for (int i = 0; i < count; i++)
		    {
		        p[i] = prev->val;
		        prev = prev->next;
		    }
		
		    return p;
		}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-02-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Leetcode -1290.二进制链表转整数
  • Leetcode -剑指Offer 06.从尾到头打印链表
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档