Plus One

本题收获

1.vector<int> 和vector<char>的区别,及与int转换

  从vector<int> nums 转换为int res型,直接for循环 res += nums[i];(nums中的数本就是int型,不需要再-‘0’,char型则需要用nums[i] 的ASIIC码减去 0 的ASIIC码)

  从vector<char> nums 转换为int res ,则是for循环 res += nums[i] - '0';

2.不知道数组具体大小时,用size = nums.size() 表示。

  且在for循环中最好不要用for(int i = 0; i < nums.size(); i++);

  而用 size = nums.size() ; for(int i = 0; i < size; i++ );

  第一种每次进入for循环都需要计算一遍nums的长度,而第二种只需要计算一次即可。

3.4.在程序中具体说:有关vector中 nums.push_back(res % dd)

  题目:

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

  The digits are stored such that the most significant digit is at the head of the list.

  给定一个用数组表示的非负数。将这个数加1,最重要的数在列表的最前面

  题意是:给定一个用数组表示的非负数,加1后返回(还是一个数组形式),位数最高的在数组的最前面。

  思路:

    我的思路:将数组转化为int整数,int整数加1后,转化为数组返回。

          出现问题是开始用int型,但是发现数很大,改成long long,还是不行,测试的数更大,就意识到这道题不能用这用的思路来解题。

    leetcode:判断末尾是不是9,若果是变为0,不是则加1,若所有位都是9,则最后将0位置1,最后一位加个0,nums[0] = 1; nums.push_back(0);

        用数组存放数,那么数肯定很大,所以不要考虑用数组转数,数转为数组的方法,出这道题的本意不是用这种方法,而是另想办法。

  代码:  非常漂亮的代码,思路也很清晰!

 class MyClass
{
public:
vector<int> plusOne(vector<int> &digits)
{
int n = digits.size();
for (int i = n-; i >=; i--)
{
if (digits[i] == )
{
digits[i] = ;
}
else
{
digits[i]++;
return digits;
}
}
digits[] = ;
digits.push_back();
return digits;
}
};

  我的测试代码:

 // PlusOne.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h"
#include "iostream"
#include "vector"
using namespace std; class MyClass
{
public:
vector<int> plusOne(vector<int> &digits)
{
int n = digits.size();
for (int i = n-; i >=; i--)
{
if (digits[i] == )
{
digits[i] = ;
}
else
{
digits[i]++;
return digits;
}
}
digits[] = ;
digits.push_back();
return digits;
}
}; int _tmain(int argc, _TCHAR* argv[])
{
vector<int> nums = {,,,,,,,,,,,,,,,,,};
vector<int> res;
MyClass solution;
res = solution.plusOne(nums);
int n = res.size();
for (int i = ; i < n; i++)
{
cout << res[i] << " ";
}
cout << endl;
system("pause");
return ;
}

  第一次出错的代码:

 // Plus One.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h"
#include "iostream"
#include "vector"
using namespace std; class Solution {
public:
vector<int> plusOne(vector<int>& digits)
{ int res = ;
vector<int> nums;
int d = ,dd = ;
int n = digits.size();
for (int i = ; i < n; i++)
{
res = res * ;
res += digits[i]; //1.强制转换的格式(int)(x) 2.digits本就是int型,不需要digits[i] - '0'
//cout << res << endl;
}
res = res + ; int res1 = res;
while (res1)
{
res1 = res1 / ;
d++;
dd = dd * ;
} dd = dd / ; for (int j = ; j < d; j++)
{
//cout << "aa" << endl;
nums.push_back(res /dd); //监视发现nums.size() 为0,因为在之前时,不知道nums的长度,所以没有设定大小。
res = res %dd; //这样的话用vector中的nums.push_back()。
dd = dd / ;
} return nums;
}
}; int _tmain(int argc, _TCHAR* argv[])
{
vector<int> nums = { , , , };
vector<int> res;
Solution solution;
res = solution.plusOne(nums);
int size = res.size();
for (int i = ;i<size; i++)
{
cout << res[i];
}
cout << endl;
system("pause");
return ;
}

  简单的代码还是各种出错啊!

  

2016.6.20——Plus One的更多相关文章

  1. Stack Overflow 2016年度 20个最佳Python问题(一)

    Stack Overflow 2016年度 20个最佳Python问题(一) https://zhuanlan.zhihu.com/p/25020763

  2. 2016.9.20 java上课作业

    此程序从命令行接收多个数字,求和之后输出

  3. 2016 - 2 - 20 ARC知识总结(二 autorelease概念及实现)

    首先祝自己生日快乐~23咯~ 一  autorelease的概念 autorelease会像C语言的自动变量那样来对待对象实例.当超出作用域(相当于变量作用域)时,对象的实例release实力方法被调 ...

  4. project 2016 11 20 树的多项式

    #include <iostream>#include <stack>#include <cmath>#include <sstream> using ...

  5. 从零开始HTML(三 2016/9/20)

    1.HTML表单 HTML 表单用于搜集不同类型的用户输入.<form> 元素,HTML 表单用于收集用户输入.<form> 元素 ①<input> 元素,< ...

  6. 从零开始HTML(二 2016/9/20)

    1.布局 ① 使用 <div> 元素的 HTML 布局,<div> 元素常用作布局工具,因为能够轻松地通过 CSS 对其进行定位. <!DOCTYPE html> ...

  7. 2016.6.20 计算机网络复习要点第三章之CSMA/CD协议

    1.最早的以太网是将许多计算机都连接到一根总线上: (1)总线的特点是:当一台计算机发送数据时,总线上的所有计算机都检测到这个数据,这种就是广播通信方式: (2)为了实现在总线上的一对一通信,可以使每 ...

  8. 2016 - 1 - 20 runloop学习(2)

    一:CFRunLoopModeRef 1. CFRunLoopModeRef带表RunLoop的运行模式 2. 一个Runloop可以有若干个mode,每个mode又包含若干个sourse,timer ...

  9. 2016 - 1 - 20 runloop学习

    一:Runloop基本知识 1.本质就是运行循环 2.基本作用: 2.1保证程序持续运行 2.2处理APP中的各种事件:触摸,定时器,selector... 2.3节省CPU资源,系统程序性能:它会让 ...

  10. 详解YUV与RGB数据格式-2016.01.20

    参考文献 什么是I帧,P帧,B帧 图文详解YUV420数据格式 RGB565 与 RGB888的相互转换 最简单的基于FFmpeg的libswscale的示例(YUV转RGB)

随机推荐

  1. service依赖dao的接口进行数据传输

    service依赖dao的接口进行数据传输

  2. MT【152】不患寡而患不均

    ((清华2017.4.29标准学术能力测试1) $a_1,a_2,\cdots,a_9$ 是数字$1$到$9$ 的一个排列,则 $a_1a_2a_3+a_4a_5a_6+a_7a_8a_9$ 的最小值 ...

  3. 何登成大神对Innodb加锁的分析

    背景 MySQL/InnoDB的加锁分析,一直是一个比较困难的话题.我在工作过程中,经常会有同事咨询这方面的问题.同时,微博上也经常会收到MySQL锁相关的私信,让我帮助解决一些死锁的问题.本文,准备 ...

  4. 【BZOJ2830/洛谷3830】随机树(动态规划)

    [BZOJ2830/洛谷3830]随机树(动态规划) 题面 洛谷 题解 先考虑第一问. 第一问的答案显然就是所有情况下所有点的深度的平均数. 考虑新加入的两个点,一定会删去某个叶子,然后新加入两个深度 ...

  5. BZOJ 1499 [NOI2005] 瑰丽华尔兹 | 单调队列优化DP

    BZOJ 1499 瑰丽华尔兹 | 单调队列优化DP 题意 有一块\(n \times m\)的矩形地面,上面有一些障碍(用'#'表示),其余的是空地(用'.'表示).每时每刻,地面都会向某个方向倾斜 ...

  6. 前端学习 -- 内联框架iframe

    内联框架iframe 可以向一个页面中引入其他的外部页面 内联框架中的内容不会被搜索引擎所检索,所以开发中尽量不要使用内联框架 <iframe></iframe> 属性: sr ...

  7. APK反编译之一:基础知识—APK、Dalvik字节码和smali文件

    refs: APK反编译之一:基础知识http://blog.csdn.net/lpohvbe/article/details/7981386 APK反编译之二:工具介绍http://blog.csd ...

  8. 【学习笔记】BEST定理

    害怕忘记简单写一点: 无向图的生成树计数:https://www.cnblogs.com/zj75211/p/8039443.html   (*ZJ学长 ORZ ) 有向图的欧拉回路计数:https: ...

  9. BZOJ 3438 小M的作物 & BZOJ 1877 [SDOI2009]晨跑

    我由衷地为我的朋友高兴.哈哈,yian,当你nick name破百上千时,再打“蒟蒻”就会被打的. 好的,说正事吧.请注意,这还是题解.但我发现,网络流实在是太套路了(怪不得这两年几乎销声匿迹).我们 ...

  10. Razor:从aspx到cshtml常见错误及正确书写方法

    http://blog.csdn.net/cheny_com/article/details/6298496 从aspx转到chshtml还是有很多要适应的地方的,本帖是个人学习笔记帖不断更新.每天开 ...