code第一部分数组:第十六题 数组表示数,加一操作

code第一部分数组:第十六题  数组表示数,加一操作

Given a number represented as an array of digits, plus one to the number.

#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <vector>
using namespace std;

int * addone(int *a,int n)
{

    int *ans;
    for (int i = n-1; i >=0; i--)
    {
        if (a[i]!=9)
        {
            a[i]++;
            break;
        }
        else
        {
            a[i]=0;
        }
    }

    if (a[0]==0)
    {
        ans=(int *)malloc(sizeof(int)*(n+1));
        for (int i = n; i >0; i--)
        {
            ans[i]=a[i-1];
        }
        ans[0]=1;
        return ans;
    }
    else
    {
        return a;
    }
}

vector<int> plusOne(vector<int> &digits) {
    int i;
    for(i = digits.size() - 1;i >= 0;--i){
        if(digits[i] != 9){
            digits[i]++;
            break;
        }
        else {
            digits[i] = 0;
        }
    }
    if(digits[0]==0) {
        digits.insert(digits.begin(),1);
    }

    return digits;
}

int main()
{
    int a[4]={9,9,9,9};
    int len=0;

    if (a[3]==9)
    {
        len=sizeof(a)/sizeof(int)+1;
    }
    else
    {
        len=sizeof(a)/sizeof(int);
    }

    int *b = addone(a,4);

    for (int i = 0; i < len; i++)
    {
        cout<<b[i];
    }

    cout<<endl;

    vector<int> result;
    vector<int> array = {1,9,9};
    result = plusOne(array);
    int n = result.size();
    for(int i = 0;i < n;i++){
        cout<<result[i];
    }

    return 0;
}
时间: 2024-08-07 00:05:06

code第一部分数组:第十六题 数组表示数,加一操作的相关文章

code第一部分:数组 第十四题 雨水问题

code第一部分:数组 第十四题 雨水问题 Given n non-negative integers representing an elevation map where the width of each bar is 1, computehow much water it is able to trap after raining.For example, Given [0,1,0,2,1,0,1,3,2,1,2,1], return 6. 分析: 解决方案1 对于每个柱子,找到其左右两

经典算法题每日演练——第十六题 Kruskal算法

原文:经典算法题每日演练--第十六题 Kruskal算法 这篇我们看看第二种生成树的Kruskal算法,这个算法的魅力在于我们可以打一下算法和数据结构的组合拳,很有意思的. 一:思想 若存在M={0,1,2,3,4,5}这样6个节点,我们知道Prim算法构建生成树是从”顶点”这个角度来思考的,然后采用“贪心思想” 来一步步扩大化,最后形成整体最优解,而Kruskal算法有点意思,它是站在”边“这个角度在思考的,首先我有两个集合. 1. 顶点集合(vertexs): 比如M集合中的每个元素都可以认

第十六课 数组的引入 【项目1-5】

第十六课 数组的引入 项目一 [数组大折腾] (1)创建一个有20个元素的整型数组,通过初始化,为数组中的前10个元素赋初值,然后通过键盘输入后10个元素的值,从前往后(从第0个到第19个)输出数组中元素的值,每5个元素换一行. [cpp] view plain copy print? int main( ) { int a[20]={...};  //初始化前10个元素 //键盘输入后10个元素的值 //由前往后输出数组中所有元素的值 printf("由前往后,数组中的值是:\n")

构建之法第一、二、十六章

<构建之法>第一.二.十六章疑问 我通过阅读发现这是一本十分有趣的书.不同于别的书的晦涩难懂,<构建之法>利用浅显易懂的语言,贴近生活的例子向我们讲述了软件工程的内容. 第一章  概论 软件=程序+软件工程 扩展:软件企业=软件+商业模式 软件工程是把系统的.有序的.可量化的方法应用到软件的开发.运营.和维护上的过程.软件的特殊性有a.复杂性 b.不可见性 c.易变性 d.服从性 e.非连续性.软件工程与计算机科学的区别:计算机科学中与实践相关的部分,都和数据以及其他学科发生关系:

【leetcode 简单】 第九十六题 最长回文串

给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串. 在构造过程中,请注意区分大小写.比如 "Aa" 不能当做一个回文字符串. 注意: 假设字符串的长度不会超过 1010. 示例 1: 输入: "abccccdd" 输出: 7 解释: 我们可以构造的最长的回文串是"dccaccd", 它的长度是 7. class Solution(object): def longestPalindrome(self, s): &quo

《剑指offer》第六十六题:构建乘积数组

// 面试题66:构建乘积数组 // 题目:给定一个数组A[0, 1, …, n-1],请构建一个数组B[0, 1, …, n-1],其 // 中B中的元素B[i] =A[0]×A[1]×… ×A[i-1]×A[i+1]×…×A[n-1].不能使用除法. #include <cstdio> #include <vector> using namespace std; //把B[i]看成[=A[0],A[1],… ,A[i-1],1,A[i+1],…,A[n-1]] //对于B,就成

软件工程导论 第一、二、十六 章 随笔

第一章 通过阅读第一章,使我对软件工程有了更加深刻的认识,从软件的定义到发展,再到具体实现一个令大众满意的软件的流程和软件开发的各个阶段都有很详细的介绍,更是引用了航空产业的发展历程做了一个比较,使读者能够清晰的理解其含义.对于软件工程与计算机科学的关系和区别也通过现实中的例子给出了详尽的解读.   关于问题 1.我通过阅读第一章的1.2.4节,我对于何为一个"足够好"的软件产生了疑问,足够好是不是就是说明并不完美,没有达到预期,是不是就说明这个软件没有达到客户的要求,不能令客户满意,

《构建之法》读书笔记之:第一、二、十六章

这周看了邹欣老师<构建之法>的1,2,16章,获益匪浅.这本书写得妙趣横生,用阿超小飞几个人的生活场景和幽默的比喻帮我理解着软件工程的相关概念,让我对软件工程有了初步的了解:原来开发软件并不是我们想的那样简单:上手直接敲代码就可以了,而是会有一套详细的流程规范.下面是我看书时的一些心得笔记,和一些无法自己解答的疑惑,烦请各位老师批评指教. 第一章: 笔记: 软件=程序+软件工程,是否可以通俗地理解为,程序只是死的机器的东西,为什么做(需求分析),做什么(软件设计),做完后这东西是否可行(软件测

php数组练习十六道题

<?php /** * 1.写函数创建长度为10的数组.数组中的元素为递增的奇数.首项为1. */ $ary = range(1, 10); //Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 6 [6] => 7 [7] => 8 [8] => 9 [9] => 10 ) print_r($ary); /** * 2.创建长度为10的数组,数组中的元素为递增的等比数,