由于深深的知道自己是事件驱动型的人,一直想补强自己的薄弱环节算法,却完全不知道从哪里入手。所以只能采用最笨的办法,刷题。从刷题中遇到问题就解决问题,最后可能多多少少也能提高一下自己的渣算法吧。

暂时的目标是一周最少两道,可能会多做多想,工作再忙也会完成这个最低目标。

Two sum:

Given an array of integers, return indices of the two numbers such that they add up to a specific target.

You may assume that each input would have exactly one solution.

Example:

Given nums = [2, 7, 11, 15], target = 9,Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].

这道题拿到手,感觉还算有点思路。

要做到O(n)的算法复杂度,肯定最多遍历一遍数组从这个思路入手,大概能想到记录数字的出现,以及用目标减去记录数字,同时拿到其索引的思路

class Solution(object):def twoSum(self, nums, target):""":type nums: List[int]:type target: int:rtype: List[int]"""look_up = {}for i, num in enumerate(nums):if target-num in look_up:return [look_up[target-num], i]look_up[num] = ireturn

造一个字典,用这个字典的key记录出现的数字,用value记录其出现的索引位置。然后使用target - num 用目标数字减去当前遍历到的数字的结果有没有在look_up里面有key记录,如果有读取其索引 然后 带上现在遍历到的数字索引返回。

Add Two Numbers:

You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list.

Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
Output: 7 -> 0 -> 8

这道题首先我读了半天题才理解到题意。要弄出这道题首先你要知道python里面链表一般如何实现,所以就需要去补充一些链表的知识(事件驱动学习就是这个意思)。查找了一些资料之后理解了链表再来看这道题就明白了

首先实现一个ListNode

class Solution(object):ListNode(self, val):self.val = valself.next = None

每当我们新开一个链表,就相当于又多创建一个类似ListNode结构的object。self.next存储的是下一个链表的地址。

这道题其实考察的是使用链表进行大数相加,由于从个位加起,所以是反转存储的方便进位。下面看代码

class Solution(object):def addTwoNumbers(self, l1, l2):""":type l1: ListNode:type l2: ListNode:rtype: ListNode"""dummy, carry = ListNode(0), 0current = dummywhile l1 or l2:val = carryif l1:val += l1.vall1 = l1.nextif l2:val += l2.vall2 = l2.nextcarry, val = val / 10, val % 10current.next = ListNode(val)current = current.nextif carry == 1:current.next = ListNode(1)return dummy.next

carry 代表进位的意思,dummy是初始化的存储结果链表中的头部指针,赋给current同样地址,但是current会在随后的操作中被往后移动。

其余的都很简单了。

第一次开始刷题,感觉不是特别习惯,也没有相关的思维。 希望万事开头难经后可以熟练起来。

周刷题第一期总结(two sum and two numbers)相关推荐

  1. leetcode剑指offe刷题-第一题-用两个栈实现队列

    leetcode剑指offe刷题-第一题 文章目录 leetcode剑指offe刷题-第一题 前言 一.用两个栈实现队列 1.思路 2.代码如下 总结 前言 记录一下自己刷算法的路程. leetcod ...

  2. JS刷题第一天| 704. 二分查找、27. 移除元素

    704. 二分查找 题目链接:力扣 文章讲解:代码随想录 视频讲解:手把手带你撕出正确的二分法 | 二分查找法 | 二分搜索法 | LeetCode:704. 二分查找_哔哩哔哩_bilibili 看 ...

  3. 刷题第一天| 704. 二分查找、27. 移除元素

    704. Binary Search 题目链接:Link: 704. Binary Search 思路链接:代码随想录数组-二分法 思路 找出low与high的中间值mid,将nums[mid] 与t ...

  4. LeetCode刷题—第一周

    一.两数之和 题目链接:两数之和 1.题目描述 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出和为目标值target 的那两个整数,并返回它们的数组下标. 你可以假设每 ...

  5. GfG第一周刷题(链表)总结

    文章目录

  6. 一周刷题记录 | WebMisc

    文章目录 BUU 0x00:[WesternCTF2018]shrine 0x01:[网鼎杯 2020 玄武组]SSRFMe HECTF 0x00 ezphp 0x01:ssrfme 0x03:签到 ...

  7. 【牛客刷题】带你在牛客刷题第一弹(C/C++语言基础题)

    目录 第一题 你好,牛客 题目 讲解: AC: 第二题 牛牛学说话之-整数 题目 讲解: AC: 第三题 牛牛学说话之-浮点数 题目 讲解: AC: 第四题 牛牛学加法 题目 讲解: AC: 第五题  ...

  8. 用JavaScript刷leetcode(刷题 第一天)

    两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标. 你可以假设每种输入只会对应一个答案.但是, ...

  9. leetCode刷题第一天--求两数之和

    两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,数组中同一个元素不能使 ...

  10. 算法(第4版)Robert Sedgewick 刷题 第一章(1)

    /*** @Description 颠倒数组排列顺序* @author SEELE* @date 2017年8月17日 上午10:56:17* @action sortArr*/public stat ...

最新文章

  1. 智能物联网(AIoT,2020年)(中)
  2. 一文讲清HBase的存储结构
  3. python列表操作:追加元素到列表的代码
  4. Leetcode 383 Ransom Note
  5. boost::range模块transformed相关的测试程序
  6. Angular应用页面里_ngcontent属性的生成逻辑
  7. 在您的Maven-Fu包中增加了一些东西
  8. matlab程序设计图像匹配,灰度,归一化算法,快速匹配。有代码好用。转载
  9. Linux多线程实践(5) --Posix信号量与互斥量解决生产者消费者问题
  10. arcgis根据矢量范围裁取tif影像(栅格数据)、批量合并shp文件、根据矢量范围裁取区域内的矢量,输出地理坐标系
  11. lsof 一切皆文件
  12. 影响机器视觉检测系统不稳定性因素分析
  13. 创建你的第一个游戏Pong——概览
  14. List 去除重复数据的 5 种正确姿势!
  15. 双系统下怎么卸载linux系统,双系统怎么卸载其中一个操作系统 双系统卸载其中一个操作系统方法...
  16. android获取手机IMSI号
  17. Final阶段基于spec评论作品
  18. win10系统无法访问指定设备或路径怎么解决?
  19. CCITT标准CRC16(1021) Java代码
  20. 软件测试之计算机基础

热门文章

  1. 计算机c程序题孔融让梨,幼儿园大班语言游戏教案《孔融让梨》含PPT课件
  2. 谷歌浏览器截图_谷歌浏览器如何截图?
  3. c语言会变颜色程序,【图片】(原创)用纯C变了个变色输出字符的程序。。。【c语言吧】_百度贴吧...
  4. 戴尔服务器720dx格式化硬盘,戴尔首个基于 Ocarina 的解决方案--DX6000G 存储压缩节点...
  5. ping,python实现批量ping包工具--小案例
  6. sa结构组网方式_5G建网:先NSA还是SA?
  7. CV求职面经 -- 数学基础
  8. oracle11gr2安装测试,Ubuntu 11.10下安装Oracle 11g R2 详解(本人测试通过) (转)
  9. RN调试利器——React Native Debugger
  10. 柯洁放言力拼AlphaGo:我抱有必死的信念!(全部细节都在这里)