代码随想录day7

news2024/11/24 15:49:33

四数之和II 

力扣

思路:

        这道题我们可以拆分为两个部分来做,首先计算前两个数组元素的和并且统计这个组合出现的次数,然后用0减掉后两个数组。

        如果发现0减去后两个数组已经出现在我们之前记录出现次数的map中了,那么就可以说他们是一个四元组组合,并且这里加的次数 就应该是我们之前记录过的次数而不是+1 

代码:

def fourSumCount(self, nums1: List[int], nums2: List[int], nums3: List[int], nums4: List[int]) -> int:
        map = {}
        count=0
        for i in nums1:
            for j in nums2:
                if i + j in map:
                    map[i+j]+=1 
                else:
                    map[i+j] = 1 
        
        for x in nums3:
            for y in nums4:
                if 0-(x+y) in map:
                    count+=map.get(0-(x+y))
        return count 

383赎金信

力扣

思路:这道题 可谓是一个完全自己写出来的题目,其他的多多少少看了些提示。

        这里我分别对两个字符做了字母出现次数的统计。并且分别用哈希表存起来

        然后重新遍历ransomnote。 如果说这里面的元素在第二个hash表中出现过,那么就减去对应出现过的次数。直到最后 记录ransomnote的哈希表的key值全部为0 .可以发现最后我是用的>0来判断的,如果说它大于0.说明第二个字符中的字母少了,也就是符合我们的题目 不能构成了。

def canConstruct(self, ransomNote: str, magazine: str) -> bool:
        hashmap  ={} 
        hashmap1 = {}
        if len(magazine) < len(ransomNote):
            return False
            
        for i in range(len(ransomNote)):
            if ransomNote[i] not in hashmap:
                hashmap[ransomNote[i]] = 1 
            else:
                hashmap[ransomNote[i]]+=1
        

        for j in range(len(magazine)):
            if magazine[j] not in hashmap1:
                hashmap1[magazine[j]] = 1 
            else:
                hashmap1[magazine[j]]+=1
        
        for k,v in hashmap.items():
            if k in hashmap1:
                hashmap[k]-=hashmap1[k]
        for k1,v1 in hashmap.items():
            if v1>0:
                return False
        return True

三数之和

         力扣

思路:

        这道题目的难点在于 答案元组不能重复 并不是代表元组内的元素不能重复

        首先对数组进行排序,如果说第一个数字都大于0的,那么和后面的数字相加也不可能等于0,所以可以直接返回答案集合。

        其次,这里设置一个i,left,right. i是遍历元组内的元素,left是i+1,right是数组内的最后一个元素。

        刚开始遍历的时候用value = nums[i] + nums[left] + nums[right] ,判断是否大于0。 如果大于0,那就说明left应该往后移动一位,如果大于0,说明right应该往前走一位。 如果等于0 ,就可以加入到答案数组中。然后分别对left和right元素进行去重

代码:

def threeSum(self, nums: List[int]) -> List[List[int]]:

        nums.sort()
        result = []
    
        for i in range(len(nums)):
            if nums[i] >0:
                return result

            if i > 0 and nums[i] == nums[i - 1]:
                continue

            left = i+1 
            right = len(nums)-1 

            while right>left:
                value = nums[i] + nums[left] + nums[right]

                if value>0:
                    right-=1 
                elif value <0:
                    left+=1 
                else:
                    result.append([nums[i],nums[left],nums[right]])
                    while right>left and nums[right]==nums[right-1]:
                        right-=1 
                    while right>left and nums[left]==nums[left+1]:
                        left+=1 
                    right-=1
                    left+=1
        return result
                

四数之和

def fourSum(self, nums: List[int], target: int) -> List[List[int]]:


        result = []

        nums.sort()

        for i in range(len(nums)):
            if nums[i] > target and i>=0 and target>0:
                break 
            if i>0 and nums[i] ==nums[i-1]:
                continue 
            
            for k in range(i+1,len(nums)):
                if nums[i] + nums[k] >target and nums[k] + nums[i] >=0:
                    break
                if k>i+1 and nums[k] ==nums[k-1]:
                    continue
                left = k+1  
                right = len(nums)-1 
                while left<right:
                    value = nums[i] + nums[k] + nums[left] + nums[right] 
                    if value >target:
                        right-=1 
                    elif value <target:
                        left+=1 
                    else:
                        result.append([nums[i],nums[k],nums[left],nums[right]])
                        while left < right and nums[left]==nums[left+1]:
                            left+=1 
                        while left <right and nums[right] ==nums[right-1]:
                            right-=1 
                        left+=1 
                        right-=1 
        return result

思路:

这道题和上面不同的是,我们不能通过一开始判断第一个元素>target就直接返回,因为上一道题目的target是一个定值,但是这道题中是一个任意值,我们可以通过后面元素相加而得到。除非是说当前元素大于target 并且target>0,那么我们可以进行break 然后继续判断后面的元素。

 其他地方 和上一道题目 基本都一样

代码:                

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/716616.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

聊一聊人工智能与视频技术的5大发展趋势与应用

随着互联网的快速发展&#xff0c;视频时代已经到来。据统计&#xff0c;目前互联网内容中&#xff0c;视频内容占据高达82%的流量&#xff0c;未来仍将持续增长。今天我们就来聊一聊关于视频技术的发展&#xff0c;以及现在的大热门–人工智能技术与视频技术的结合。 视频技术…

使用家庭宽带和摄像头,实现公网直播

那天去逛商场看到有个营业厅&#xff0c;本想进去问问有没有存话费送话费的活动&#xff0c;结果被忽悠办了一个19.9升千兆宽带加送一个路由器的业务。 网络环境验证 听他们说现在家庭宽带都是有公网IPV6地址的&#xff0c;立马用电脑试了下确实有IPV6地址。 赶紧随便写了几行…

pytorch学习指南

安装anaconda&#xff1a; https://blog.csdn.net/fan18317517352/article/details/123035625 教程&#xff1a;bilibili up主&#xff1a;一只小土堆 构建pytorch空间 pytorch安装 查看cpu 安装命令pytorch&#xff1a;conda install pytorch torchvision torchaudio cpu…

SOLIDWORKS CSWA/CSWP认证考试培训

通过专业的培训和考试认证&#xff0c;可以让您多掌握一门软件的使用&#xff0c;让课程设计、毕业设计或科研工作多一个助手&#xff0c;在当前就业压力大的情况下提升自己的求职竞争力。 SOLIDWORKS CSWA/CSWP认证考试培训内容&#xff1a; 1、了解考试规则 2、认识考试题型…

数据结构--KMP之求next数组

数据结构–KMP之求next数组 next数组的作用:当模式串的第j个字符失配时&#xff0c;从模式串的第 next[j]的继续往后匹配 任何模式串都一样&#xff0c;第一个字符不匹配时&#xff0c;只能匹配下一个子串&#xff0c;因此&#xff0c;往后余生 \color{balck}任何模式串都一样…

官宣 | 平行云正式升级为Paraverse平行云科技,开启全球业务新征程

6月30日, "Here is New-Gen Web"——Paraverse Global Strategy and Brand Launch Party 于香港科学园召开&#xff0c;会上平行云正式宣布升级为Paraverse平行云科技&#xff08;以下简称Paraverse)&#xff0c;并升级品牌标识“Paraverse”。这一全新命名与视觉焕新…

JUC--start线程

native&#xff1a;本地方法栈&#xff0c;c语言的函数,但凡调用的是这个接口&#xff0c;就是调用底层操作系统&#xff0c;第三方c语言的接口。 也就是说多线程和语言无关&#xff0c;是操作系统层面的东西。基本上每种语言都有自己的多线程实现方式。 java的前身就是c ja…

Mysql进阶(二)之事务篇

文章目录 面试题事务1.概念2.事务的四大特性ACID3.操作 并发事务问题1.脏读2.不可重复读3.幻读 事务隔离级别&#xff08;解决并发问题&#xff09;事务的原理1.redo log&#xff08;重做日志&#xff09;2.undo log&#xff08;回滚日志&#xff09;3.MVCC&#xff08;多版本并…

最优化问题matlab求解-fminsearch()和fmincon()函数的使用

matlab可以求解无约束最优化问题、有约束最优化问题和线性规划、二次型规划问题等&#xff0c;同时实现了最小二乘法的曲线拟合方法。matlab求解优化问题的步骤为&#xff1a; 写标准型描述目标函数&#xff1a;M-函数或匿名函数用fminunc()或fmincon()等函数求解原问题。检验…

centos openssl升级

centos openssl升级 一、下载二、&#xff08;升级&#xff09;安装 一、下载 执行命令下载&#xff1a; wget https://www.openssl.org/source/openssl-1.1.1f.tar.gz浏览器下载&#xff0c;访问官网网址&#xff1a;https://www.openssl.org/source &#xff08;1&#xff0…

汇编语言基础--nasm语法数据类型

dd //define 一个字节 例如&#xff1a;dd 100 dw //define 一个字 也就是两个字节 例如&#xff1a;dw 0xaa55 db //define 双字 也就是4个字节 例如&#xff1a;db 0x12345678 由于intel x86的架构采用小端存储因此二进制序列如下&#xff1a; 如果是16进制在后面输入h …

C++ 数据结构图(1)

1. 图的基本概念 图是由顶点集合及顶点间的关系组成的一种数据结构&#xff1a;G (V&#xff0c; E) &#xff0c;其中&#xff1a; 顶点集合 V {x|x 属于某个数据对象集 } 是有穷非空集合 &#xff1b; E {(x,y)|x,y 属于 V} 或者 E {<x, y>|x,y 属于 V &&…

【Spring Boot 事务】万字详解Spring Boot 事务,赶快跟随良辰一起去学习Spring Boot 事务吧! ! !

前言: 大家好,我是良辰丫,这篇文章我将带领大家一起去学习Spring Boot 事务文章,我们在学习数据库的时候已经接触过事务了,来跟随我的脚步一起来瞧一下Spring Boot 事务吧.&#x1f48c;&#x1f48c;&#x1f48c; &#x1f9d1;个人主页&#xff1a;良辰针不戳 &#x1f4d6;…

得物社区推荐精排模型演进

1.背景 得物社区是一大批年轻人获取潮流信息、分享日常生活的潮流生活社区。其中用户浏览的信息&#xff0c;进行个性化的分发&#xff0c;是由推荐系统来决策完成的。目前得物社区多个场景接入了推荐算法&#xff0c;包括首页推荐双列流、沉浸式视频推荐、分类tab推荐流、直播…

Tomcat的安装部署及优化

tomcat安装部署 tomcat安装部署 一、概述&#xff1a;1.tomcat介绍&#xff1a;2.tomcat核心组件&#xff1a;3.tomcat处理内部请求&#xff08;数据流向图&#xff09;4.tomcat服务部署&#xff1a; 二、虚拟主机配置&#xff1a;1.创建 chan 和 baek 项目目录和文件&#xf…

Python常见的开发工具合集对比

​ Python是一种功能强大且易于学习的编程语言&#xff0c;被广泛应用于数据科学、机器学习、Web开发等领域。随着Python在各个领域的应用越来越广泛&#xff0c;越来越多的Python开发工具也涌现出来。但是&#xff0c;对于新手来说&#xff0c;选择一款合适的Python开发工具可…

BurpSutie拓展插件推荐-漏洞扫描插件

为方便您的阅读&#xff0c;可点击下方蓝色字体&#xff0c;进行跳转↓↓↓ 01 fastjsonScan&#xff08;1&#xff09;工具介绍&#xff08;2&#xff09;下载地址&#xff08;3&#xff09;使用说明 02 SpringScan&#xff08;1&#xff09;工具介绍&#xff08;2&#xff09…

python接口自动化(十三)--cookie绕过验证码登录(详解)

简介 有些登录的接口会有验证码&#xff1a;短信验证码&#xff0c;图形验证码等&#xff0c;这种登录的话验证码参数可以从后台获取的&#xff08;或者查数据库最直接&#xff09;。获取不到也没关系&#xff0c;可以通过添加cookie的方式绕过验证码。&#xff08;注意&#x…

GPT模型训练实践(1)-基础概念

GPT 是 Generative Pre-trained Transformers 的缩写&#xff0c;一种先进的深度学习模型&#xff0c;旨在生成类人文本。GPT 的三个组成部分Generative、Pre-trained 和 Transformer&#xff0c;其解释如下&#xff1a; Generative生成&#xff1a;生成模型是用于生成新数据的…

【DASOU视频记录】Transformer从零详细解读

文章目录 来源transformer的全局理解位置编码多头注意力机制残差Batch NormalLayer NormalDecoder 来源 b站链接 transformer的全局理解 输入中文&#xff0c;输出英文 细化容易理解的结构&#xff0c;就是先编码&#xff0c;再解码 进一步细化的结构&#xff0c;就是多个编…