第一次刷Leetcode,为什么耗费很多时间
Leetcode第2题思考过程分析:耗费的时间与思考过程
1、 审题耗费了很长时间,英文看不懂。两个单链表代表了两个整数,整数逆序,(2 -> 4 -> 3) + (5 -> 6 -> 4),(2 -> 4 -> 3)表示342,另一个数是456,和为708;巧合的是243+564=807,这个巧合不能用来解题。
2、 解题的初步思路是逆序链表,将数字存在普通数组里(这需要动态数组,因为输入的链表长度未定),然后相加,再把sum分解为各位数字,逆序存入单链表(这一步令我困惑的是对两个链表的操作有重复的,想着能不能简化,其实顺序访问链表存入数组是可行的)。这个时候我已有的知识是:sum%10这样的操作可以得到个位数。
3、 思考ListNode* l1是如何存这些数字的,l1是不是为空的头指针。其实第一个节点就存了(2 -> 4 -> 3)的2。
注意链表里有个函数,所以new ListNode(n)可以初始化一个节点,next置为NULL
4、 下面是代码各部分当时的思考分析

0:考虑链表有没有头指针,(2 -> 4 -> 3),l1节点存的2;
1:想着declare一个ListNode指针有两种写法
2:顺序遍历链表,不用new的数组,vector添加元素有push_back,想了下有没有push_front,vector为了效率,不支持,又考虑用insert操作。
4:从数字转换为int,vector存的顺序为(2 -> 4 -> 3),用正向iterator首先得到低位2,但用num1=num1*10+*it迭代需要先从3开始,由此用reverse_iterator.
步骤2和4因为有两个链表,需要重复这两步,考虑过如何简化,又把2考虑为链表逆序,不用vector,只用指针操作,其实多想了
5:对和需要分解为各位数字,并用创建的新链表接收。考虑了while条件为numSum!=0,
该如何写循环语句,是用尾插法还是头插法,还把newSum=newSum/10写成newSum=newSum%10。
第五步耗费了大量时间,总是想不清楚,感觉很混乱,因为并没有访问链表时p=p->next这种现成的语句。
3、原本写成int,submit报错如下:测试 [9,1999999999]不通过,得到的结果很奇怪。

Num2的值为1410065399,不是应该为9999999991吗?为了检测程序中的错误,添加了很多cout语句。看4部分代码,没错啊。其实问题不是出在4,而是整形溢出了,查了int最大值,比9999999991小。把num1和num2改为long型的,又遇到了错误,这个时候我才意识到test case中有大数,连long long都装不下。需要用大数计算。
审题花费时间,然后是想出整体解决思路,实现整体思路中的步骤,每个步骤可能有多种写法(这是个广度搜索过程),前步骤又影响后步骤(这是个深度搜索思考过程,如果进行不下去了,会回到某点),如果遇到想不清细节的部分就会很耗时间。代码需要考虑整体,而脑力又只够思考局部。
第一次刷Leetcode,为什么耗费很多时间的更多相关文章
- 第一次刷leetcode小结
LeetCode 上不会的 Reverse Integer Gray Code Generate Parentheses Pascal's Triangle II 正方向读和反方向读保持不变的区别 T ...
- 刷leetcode是什么样的体验?【转】
转自:https://www.zhihu.com/question/32322023 刷leetcode是什么样的体验? https://leetcode.com/ 1 条评论 默认排序 按时间排 ...
- 用 JavaScript 刷 LeetCode 的正确姿势【进阶】
之前写了篇文章 用JavaScript刷LeetCode的正确姿势,简单总结一些用 JavaScript 刷力扣的基本调试技巧.最近又刷了点题,总结了些数据结构和算法,希望能对各为 JSer 刷题提供 ...
- 刷LeetCode的正确姿势——第1、125题
最近刷LeetCode比较频繁,就购买了官方的参考电子书 (CleanCodeHandbook),里面有题目的解析和范例源代码,可以省去非常多寻找免费经验分享内容和整理这些资料的时间.惊喜的是,里面的 ...
- 初刷LeetCode的感受
自从上个月进入实验室的云安全项目组后,因为要接触到实际的代码,在实验室博士的建议下我们项目组的硕士开始刷LeetCode练习编程能力,保持每周抽空刷几道算法题.虽然刷的不多,到现在一共只刷了不到30题 ...
- 从心出发-刷leetcode写给5年后的自己
而立之年终未立,不惑而年犹存惑!这或许就是所谓的中年危机吧! 自认为是一个"勤奋"的人,又"未有寸功",天天碌碌,不知何为. "常立志"而未 ...
- 《通过刷leetcode学习Go语言》之(1):序言
Author : Email : vip_13031075266@163.com Date : 2021.03.07 Version : 北京 C ...
- 用JavaScript刷LeetCode的正确姿势
虽然很多人都觉得前端算法弱,但其实 JavaScript 也可以刷题啊!最近两个月断断续续刷完了 leetcode 前 200 的 middle + hard ,总结了一些刷题常用的模板代码.走过路过 ...
- GitHub 热点速览 Vol.18:刷 LeetCode 的正确姿势
作者:HelloGitHub-小鱼干 摘要:找对路子,事半功倍,正如本周 GitHub Trending #刷 LeetCode# 主题想表达的那般,正确的学习姿势方能让人走得更远,走进大厂
随机推荐
- [Linux] 028 源码包安装过程
1. 安装准备 安装 C 语言编译器 下载源码包 如:apache 相应源码包下载地址 2. 安装注意事项 源代码保存位置:/usr/local/src 软件安装位置:/usr/local 如何确定安 ...
- phpcms列表分页ajax加载更多
1.在phpcms\modules\content\index.php文件中添加以下函数: /*列表分页ajax加载更多*/ public function homeajaxlist() { if( ...
- ExcelVBA 操作putty
Private Sub login(ip As String, userName As String, password As String) Dim TaskID As Long '设置进程id p ...
- document.domain vs location.hostname vs location.host
限制是同源政策的相同规则 document.domain 获取域名 location.hostname 获取域名 location.host 获取域名+端口 document.domain ...
- 76.Longest Consecutive Sequence(最长的连续序列)
Level: Hard 题目描述: Given an unsorted array of integers, find the length of the longest consecutive ...
- 并行开发 2.plink
原文:8天玩转并行开发——第二天 Task的使用 在我们了解Task之前,如果我们要使用多核的功能可能就会自己来开线程,然而这种线程模型在.net 4.0之后被一种称为基于 “任务的编程模型”所冲击, ...
- JS 页面繁简字转换
// 本js用于客户在网站页面选择繁体中文或简体中文显示,默认是正常显示,即简繁体同时显示// 在用户第一次访问网页时,会自动检测客户端语言进行操作并提示.此功能可关闭// 本程序只在UTF8编码下测 ...
- 使用logstash同步MongoDB数据到es
input{ mongodb{ codec => "json" uri => 'mongodb://127.0.0.1:27017/kuaibao' placehold ...
- python搭建服务,传输文件
一.进入需要共享的文件目录 #cd /home #python -m SimpleHTTPServer 二.浏览器访问资源 再浏览器地址栏输入: 服务器IP:8000 如图:
- HTML 地理定位 的实例
<!DOCTYPE html> <html lang="en"> <head> <title>地理定位</title> ...