leedcode刷题笔记day1

这篇具有很好参考价值的文章主要介绍了leedcode刷题笔记day1。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

题目大意:
leedcode刷题笔记day1,python学习,leedcode,笔记,leetcode,算法

暴力解法
两个for循环(也是我一看到题目想到的方法)

枚举在数组中所有的不同的两个下标的组合逐个检查它们所对应的数的和是否等于 target
复杂度分析
时间复杂度:O(n2),这里 n 为数组的长度
空间复杂度:O(1),只用到常数个临时变量

// public class Solution {
//     public int[] twoSum(int[] nums,int target) {
//         int len = nums.length;

//         for (int i=0; i < len-1; i++){
//             for (int j = i + 1; j < len; j++){
//                 if (nums[i] + nums[j] == target){
//                     return new int[]{i,j};
//                 }
//             }
//         }

//         throw new IllegalArgumentException("No two sum solution");
//     }
// }

使用哈希表
为了省去一层循环–>以空间换时间
leedcode刷题笔记day1,python学习,leedcode,笔记,leetcode,算法
它的逻辑就是首先让6这个key以及对应的下标value存入哈希表,然后接下来的一个元素是3,与其对应的元素就是8-3=5,而5不在目前的哈希表中,所以将3以及对应下标存入哈希表中,接下来是8,8-8=0,0也不在哈希表中,将8以及对应下标存入哈希表中,接下来是元素2,8-2=6,6在哈希表中,因此2和6就是我们要找的元素,将他们的下标【0,3】返回输出,算法结束。
leedcode刷题笔记day1,python学习,leedcode,笔记,leetcode,算法

import java.util.HashMap;
import java.util.Map;

public class Solution {
    public int[] twoSum(int[] nums,int target){
        int len = nums.length;
        Map<Integer,Integer> hashMap = new HashMap<>(len - 1);
        hashMap.put(nums[0],0);
        for (int i = 1;i < len;i++){
            int another = target - nums[i];
            if (hashMap.containsKey(another)){
                return new int[]{i,hashMap.get(another)};
            }
            hashMap.put(nums[i],i);
        }
        throw new IllegalArgumentException("No two sum solution");
    }
}

leedcode刷题笔记day1,python学习,leedcode,笔记,leetcode,算法
看见的一个比较有意思的解法
从人工推导到编程实现的过程~

代码块
class Solution(object):
    def twoSum(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: List[int]
        """
        # 遍历列表
        for i in range(len(nums)):
            # 计算需要找到的下一个目标数字
            res = target-nums[i]
                # 遍历剩下的元素,查找是否存在该数字
            if res in nums[i+1:]:
                # 若存在,返回答案。这里由于是两数之和,可采用.index()方法
                # 获得目标元素在nums[i+1:]这个子数组中的索引后,还需加上i+1才是该元素在nums中的索引
                return [i, nums[i+1:].index(res)+i+1]

作者:从前的我——再次回归
链接:https://leetcode.cn/problems/two-sum/solutions/1463966/jian-dan-python-by-chanemo-muld/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

python哈希表比官方分高!!!官方的哈希表才击败80%,而且比官方的容易懂!

class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        n = len(nums)
        mp = {}
        for i in range(n):
            t = target - nums[i]
            if t in mp:
                return [mp[t], i]
            # 存放nums[i]
            mp[nums[i]] = i
        return []

leedcode刷题笔记day1,python学习,leedcode,笔记,leetcode,算法文章来源地址https://www.toymoban.com/news/detail-806775.html

到了这里,关于leedcode刷题笔记day1的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 算法刷题Day1 二分查找+移除元素

    代码随想录-数组-1.数组理论基础 数组是存放在 连续内存空间 上的 相同类型 数据的 集合 优点:常数时间复杂度访问元素 缺点: 在删除或者增添元素的时候,就难免要移动其他元素的地址 ,时间复杂度为O(n) 代码随想录-数组-2.二分查找 前提条件 二分查找前提条件: 数组

    2024年02月10日
    浏览(54)
  • 算法刷题营【Day1】:: 704.二分查找:二分法详谈与相关刷题

    本内容是笔者结合《代码随想录》总结所得,记录学习过程,分享知识! 目录: 1. 开篇例题:704. 二分查找 2. 题解参考(模板写法) - - 2.1 方法一:左闭右闭写法 - - 2.2 方法二:左闭右开写法 3. 模板解释:左闭右闭 - - 3.1 区间划定 - - 3.2 left 、right 移动问题 - - 3.3 循环条件

    2024年02月04日
    浏览(46)
  • 算法刷题营【Day1】:: 27. 移除元素:快慢指针在顺序表中的应用与相关刷题

    本内容是笔者结合《代码随想录》总结所得,记录学习过程,分享知识! 目录: 1. 开篇例题:27. 移除元素 2. 题解参考 3. 题解思路 4. 相关题 [ - - 4.1 26. 删除有序数组中的重复项 ] [ - - 4.1 283. 移动零 ] 5. 相关题题解及简要思路 - - 5.1 26. 删除有序数组中的重复项 - - 5.1 283. 移动

    2024年02月06日
    浏览(95)
  • 算法笔记day1小结

    最近在通过胡凡的算法笔记一书学习算法,准备开个帖子记录下每日学习进展,话不多说那就开始吧! 定义:内存地址称为指针 , 指针变量即存储地址的变量。(虽然有点绕口,但可以理解为指针就是一个地址,对应着内存中的一个存储单元。unsigned类型的整数)。 指针的

    2024年02月19日
    浏览(49)
  • C++day1(笔记整理)

    1.第一个c++程序:hello world 2.cout的使用  3.输出斐波那契的前10项。    1 1 2 3 5 8 13 ···· 4. cin标准输入流对象 5.终端输入一个字符,判断该字符的类型,字母(大写/小写)、数字字符,其他字符。 6.局部变量和命名空间冲突 7.全局变量和命名空间冲突问题 8.命名空间的嵌套 9.给

    2024年02月12日
    浏览(35)
  • Vue3 学习笔记(Day1)

    「写在前面」 本文为尚硅谷禹神 Vue3 教程的学习笔记。本着自己学习、分享他人的态度,分享学习笔记,希望能对大家有所帮助。 目录 0 课程介绍 1 Vue3 简介 2 创建 Vue3 工程 2.1 基于 vue-cli 创建 2.2 基于 vite 创建(推荐) 2.3 一个简单的效果 P1:https://www.bilibili.com/video/BV1Za4y

    2024年02月20日
    浏览(42)
  • LeedCode刷题---子数组问题

    顾得泉: 个人主页 个人专栏: 《Linux操作系统》  《C/C++》  《LeedCode刷题》 键盘敲烂,年薪百万! 题目链接: 最大子数组和         给你一个整数数组  nums  ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和        子数组 

    2024年02月03日
    浏览(23)
  • leedcode刷题(1)

    各位朋友们,大家好,从今天开始我将陆续为大家更新我自己每天的leedcode刷题,我将会为大家说明每一步的来由,保证你一天新学会几道题目。各位朋友可以跟着博主每天刷几道题,相信两个月后大家的代码能力可以得到明显的提高。那么接下来就开始今天的刷题之路了哦

    2023年04月10日
    浏览(19)
  • leedcode刷题(3)

    各位朋友们大家好,今天是我leedcode刷题系列的第三篇,废话不多说,直接进入主题。 leetcode之分割链表(难度:中等) 给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。 你不需要 保留 每个分区

    2023年04月11日
    浏览(17)
  • leedcode刷题(4)

    各位朋友们,大家好。这两天我将为大家分享我在学习栈的过程中遇到的题目,我们一起来看看。 leetcode之逆波兰表达式求值(难度:中等) 给你一个字符串数组 tokens ,表示一个根据 逆波兰表示法 表示的算术表达式。 请你计算该表达式。返回一个表示表达式值的整数。

    2023年04月15日
    浏览(19)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包