算法---大数据相加

  开通博客开始第一次写发表算法博客。深知一半算法考试都是用C,C++,由于大四开始到今年毕业工作到现在一直从事C#开发,C++用得很少了。链表,指针也只知道一个概念了。用得没以前熟练了。所以后续更新的算法题我都是基于C#语法的。算法主要体现的是解题思路。跟题目一样,本次算法主要实现大数据相加。

解题思路:

1. 将大数据存储到一个链表中,C#中用List<int>来存储,每个节点表示每一位的数字. {1,2,3,4,5} =》12345 和{9,6,5,9,5} =》96595 (C,C++就需要自己通过指针来实现链表功能了。)

      2. 对数据的每一位进行相加。不进行进位操作。{10,8,8,13,10}

    3. 遍历集合,对大于或者等于10的实现进位操作.{1,0,8,9,4,0}

Code 如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BigNumAdd
{
    public class Program
    {
        public static void Main(string[] args)
        {
            List<int> num1 = new List<int>() { 1, 2, 3, 4, 5 };
            List<int> num2 = new List<int>() { 9, 6, 5, 9, 5 };
            List<int> sum = AddTwoNum(num1, num2);

            Console.WriteLine(string.Join("", sum));
            Console.ReadKey();
        }

        /// <summary>
        /// 两数字相加
        /// </summary>
        /// <param name="num1"></param>
        /// <param name="num2"></param>
        /// <returns></returns>
        private static List<int> AddTwoNum(List<int> num1, List<int> num2)
        {
            List<int> longNum = null; // 找出长的数字
            List<int> lessNum = null; // 找出短的数字
            if (num1.Count() >= num2.Count())
            {
                longNum = num1;
                lessNum = num2;
            }
            else
            {
                longNum = num2;
                lessNum = num1;
            }

            // 每一位置数据相加,对应前面思路解析第二条
            for (int index = 0; index < lessNum.Count(); index++)
            {
                longNum[longNum.Count() - 1 - index] += lessNum[lessNum.Count() - 1 - index];
            }

            CheckNum(longNum); // 遍历集合实现进位功能.对应前面思路的第三条

            return longNum;
        }

        /// <summary>
        /// 将每一个位置数据大于或等于10的进位
        /// </summary>
        /// <param name="bigNum">大数字</param>
        private static void CheckNum(List<int> bigNum)
        {
            for (int index = bigNum.Count() - 1; index >= 1; index--)
            {
                if (bigNum[index] >= 10)
                {
                    bigNum[index - 1] += bigNum[index] / 10; //进位
                    bigNum[index] = bigNum[index] % 10; // 求余数
                }
            }

            if (bigNum[0] > 10)
            {
                bigNum.Insert(0, bigNum[0] / 10);
                bigNum[1] = bigNum[1] % 10;
            }
        }
    }
}
时间: 2024-10-23 22:44:23

算法---大数据相加的相关文章

算法---大整数相加

原文:算法---大整数相加 开通博客开始第一次写发表算法博客.深知一半算法考试都是用C,C++,由于大四开始到今年毕业工作到现在一直从事C#开发,C++用得很少了.链表,指针也只知道一个概念了.用得没以前熟练了.所以后续更新的算法题我都是基于C#语法的.算法主要体现的是解题思路.跟题目一样,本次算法主要实现大数据相加. 解题思路: 1. 将大数据存储到一个链表中,C#中用List<int>来存储,每个节点表示每一位的数字. {1,2,3,4,5} =>12345 和{9,6,5,9,5}

大数据相加

页面: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>大数据相加</title> </head> <body> <h3 style="margin-left:800px;margin-top: 200px;">我是大数据相加</h3>

链表解大数据相加减相乘

/*题意:大数相加减相乘单链表的运用*/#include<stdio.h>#include<stdlib.h>#include<string.h> char c;int flag; typedef struct node{ char data; struct node *next;} Node; Node *a[10]; Node *create_link(){ Node *head,*p; head=p=NULL; char m; while(1) { scanf(&

杭电OJ1002大数据相加

先输入n ,代表共有几组数字,再输入n组数据 #include<iostream> #include<stdio.h> #include<math.h> #include<string.h> #include<algorithm> #include<malloc.h> using namespace std; char resu[10000]; void Reverse(char a[10000]) { int leng = strl

大数据算法(一)亚线性算法

来源:大数据算法 王宏志 一.概述 大数据定义:在给定的资源约束下,以大数据为输入,在给定时间约束内可以生成满足给定约束结果的算法. 大数据特点:4V 大数据算法可以不是: 精确算法 内存算法 串行算法 仅在电子计算机上运行的算法 大数据算法不仅是: 云计算 MapReduce 大数据分析和挖掘的算法 难度: 访问全部数据时间过长 读取部分数据 亚线性算法 数据难以放入内存 将数据存储到磁盘上 外存算法 仅基于少量数据进行计算 空间亚线性算法 单个计算机难以保存全部数据 并行处理 并行算法 计算

大数据的本质

数据来源? 购买(政府.阿里巴巴.数据交易所) 爬虫 数据采集(机器人.无人驾驶.人工智慧) 获得的是原始数据 什么是数据清洗? 按照需求分析,过滤出有效的完整的数据,放入数据仓库 etc 数据清洗转换 有哪些应用? 商品. 新闻推荐   信贷.个人信用   婚姻(珍爱网) 舆论检测平台 医疗(全民健康档案) 交通(推荐路线,路况情况,)  气象(彩云天气) 时空 本质上是这些应用,都是去学习大数据模型,这就是所谓的机器学习 什么是大数据模型?  模型主要包括 业务 算法 解决问题:使用数据干什

平安陆金所java 大数据 算法 android开发

java工程师-互联网方向 工作职责 1 参与产品需求分析.网站系统的设计方案: 2 参与.协助项目组长共同完成或带领项目小组承担任务的系统功能设计和数据库设计 3 独立完成个人承担模块或项目的开发和测试 任职要求 重点大学本科及以上学历,计算机相关专业优先 有3年以上JAVA WEB开发工作经验:有高访问量,高负载网站系统开发经验者优先 1. 精通Java Core/数据结构及算法/J2EE/Struts2/WebWork 2/JSP/Servlet/Java TCP/IP Socket/Aj

大数据日知录:架构与算法

大数据丛书 大数据日知录:架构与算法(大数据领域专家力作,专注大数据架构和算法,全面梳理大数据相关技术) 张俊林 著   ISBN 978-7-121-24153-6 2014年9月出版 定价:69.00元 404页 16开 编辑推荐 这是一本心血之作,历时3年,质量上乘. 从架构与算法的角度,比较全面地分门别类梳理了大数据相关技术. 本书内容紧跟技术前沿,讲解深入浅出,适合大数据领域所有技术人员. 书中还列有作者优选的高质量文献,能为读者节省选择的时间,绝对值得一读. 内容提要 大数据是当前最

阿里天池大数据之移动推荐算法大赛总结及代码全公布

移动推荐算法比赛已经结束了一个多星期了,现在写一篇文章来回顾一下自己的参赛历程. 首先,对不了解这个比赛的同学们介绍一下这个比赛(引用自官网): 赛题简介 2014年是阿里巴巴集团移动电商业务快速发展的一年,例如2014双11大促中移动端成交占比达到42.6%,超过240亿元.相比PC时代,移动端网络的访问是随时随地的,具有更丰富的场景数据,比如用户的位置信息.用户访问的时间规律等. 本次大赛以阿里巴巴移动电商平台的真实用户-商品行为数据为基础,同时提供移动时代特有的位置信息,而参赛队伍则需要通