力扣刷题记录

Posted eenio

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了力扣刷题记录相关的知识,希望对你有一定的参考价值。

今天开始正式刷题,为找工作做准备,这篇博客用来记录一下;刷题顺序是先刷hot题目前100个

1.两数之和:

比较简单,一次就做出来。

思路:python的字典是哈希存储的,看了一下dict内置方法只有has_key,所以将值作为key,下标作为value,存储字典,然后遍历列表,以当前值为基准,用has_key判断(target-当前值)是否存在,存在则返回相应的下标即可。,代码如下:

class Solution(object):
    def twoSum(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: List[int]
        """
        info={}
        # 将数据存入到字典当中
        for i in range(len(nums)):
            info[nums[i]] = i 
        for i in range(len(nums)):
            temp = target-nums[i]
            if info.has_key(temp):
                return [info[temp],i]

 2.两数相加

给了两个链表,代表两个数字,逆序存储。将两个数字相加,存储成相同的链表格式,返回。

第一次没做出来,看了答案才会的,第二次做有一些小bug,认真分析之后对一些细节地方理解更深刻了。

思路:不需要将两个数算出来然后相加,只需要将每一位相加,加的过程中判断是否有进位,如果有进位的话就多加一个1。另外注意这块没有新创建节点,而是直接使用a,b已经存在的节点,更改他们的值,注意这里是默认使用a节点,a为空了则使用b节点。另外注意循环最后一句是在拼接目标链表,而这一句

p = (a==null?b:a);是在更改目标链表的值为正确的值。

 

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        ListNode p = null;
        ListNode a = l1;
        ListNode b = l2;
        int carry=0;   //进位标志
        int val;    //每一位的和
        while(a!=null || b!=null){
            val = (a==null?0:a.val) + (b==null?0:b.val) + carry;  //计算该位的值
            carry = val>=10?1:0;
            val = val%10;  //必须是小于10的
            p = (a==null?b:a);    //让p指向当前a,b里面不为空的,默认是a
            p.val = val;  //更新节点的值
            a = (a==null?null:a.next);  //后移节点
            b = (b==null?null:b.next);
            p.next=(a==null?b:a);   //将p也后移一下,这一部无所谓,只是单纯的后移一下,
        }        
        //最后的进位判断
        if(carry>0){
            p.next=new ListNode(1);
        }
        return l1;
    }
}

 

 

 

 

 

 

------------恢复内容结束------------

以上是关于力扣刷题记录的主要内容,如果未能解决你的问题,请参考以下文章

力扣刷题记录——两数之和

力扣刷题记录——两数之和

力扣刷题记录——两数之和

力扣刷题资源

开启力扣刷题之路 >数组> 二分法

力扣刷题详解(含代码动态展示)