letcode 分类练习 x个数之和问题 15. 三数之和 18. 四数之和 454. 四数相加 II 383. 赎金信

news2024/9/24 23:22:46

letcode 分类练习 x个数之和问题 15. 三数之和 18. 四数之和 454. 四数相加 II 383. 赎金信

  • 三数之和
  • 四数之和
  • 454. 四数相加 II
  • 383. 赎金信

三数之和

在这里插入图片描述三数之和,双指针模版代码,注意去重逻辑,还有只需要去重第一和第二重循环,第三重循环就不用去重了,这是因为只要找到了一个三元组,第二重循环就会往下走,那么下一个三元组是不可能有重复的三元组的。

class Solution {
public:
    vector<vector<int>> threeSum(vector<int>& nums) {
        sort(nums.begin(), nums.end());
        vector<vector<int>> result;
        for(int i = 0;i<nums.size();i++){
            if(i > 0 && nums[i] == nums[i-1])continue;
            int z = nums.size() - 1;
            for(int j = i + 1;j<nums.size();j++){
                if(j > i + 1 && nums[j] == nums[j-1])continue;
                while(j < z  && nums[z] + nums[i] + nums[j] > 0){z--;}
                    if(j == z) break;
                    if(nums[z] + nums[i] + nums[j] == 0)
                        result.push_back(vector<int>({nums[z],nums[i],nums[j]}));
                }
            }
        return result;
    }
};

四数之和

还是一样的套路,最后一层不去重,这里还得注意四个数求和不要溢出,做法是

long sum = (long) nums[i] + nums[j] + nums[x] + nums[y]

在这里插入图片描述

class Solution {
public:
    vector<vector<int>> fourSum(vector<int>& nums, int target) {
        int n = nums.size();
        vector<vector<int>> results;
        sort(nums.begin(), nums.end());
        for(int i = 0;i<n;i++){
            if(i>0 && nums[i] == nums[i-1]) continue;
            for(int j  = i+1;j<n;j++){
                if(j>i+1 && nums[j] == nums[j-1]) continue;
                int y = n-1;
                for(int x = j + 1;x<n;x++){
                    if(x > j + 1 && nums[x] == nums[x-1]) continue;
                    long sum =  (long)nums[i] + nums[j] + nums[x] + nums[y];
                    while(y > x && sum > target){
                        y--;
                        sum =  (long)nums[i] + nums[j] + nums[x] + nums[y];
                    }
                    if(y == x) break;
                    if(sum == target){
                        results.push_back({nums[i] , nums[j] , nums[x] , nums[y]});
                    }
                }
            }
        }
        return results;
    }
};

454. 四数相加 II

在这里插入图片描述这个题注意是求元祖数量(这个是允许重复的),将4数之和转成两数之和(A+B, C + D),之后用hash表就行了

class Solution {
public:
    int fourSumCount(vector<int>& nums1, vector<int>& nums2, vector<int>& nums3, vector<int>& nums4) {
        int l1 = nums1.size(); int l2 = nums2.size(); int l3 = nums3.size(); int l4 = nums4.size();
        unordered_map<int, int> map;
        for(int i = 0;i<l1;i++){
            for(int j = 0;j< l2;j++){
                int sum_12 = nums1[i] + nums2[j];
                if(map.count(sum_12))map[sum_12]++;
                else map[sum_12] = 1;
            }
        }
        int count = 0;
        for(int x = 0; x< l3;x++){
            for(int y = 0;y< l4;y++){
                int target = 0 - nums3[x] - nums4[y];
                if(map.count(target)) count+= map[target];
            }
        }
        return count;
    }
};

383. 赎金信

在这里插入图片描述用hash表即可解决,字母hash表(size = 26)

class Solution {
public:
    bool canConstruct(string ransomNote, string magazine) {
        vector<int> num(26, 0);
        for(auto m : magazine){
            num[m - 'a']++;
        }
        for(auto r : ransomNote){
            if(num[r - 'a'] <= 0) return false;
            else  num[r - 'a']--;
        }
        return true;

    }
};

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

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

相关文章

从Python翻译Go代码谈起:AI辅助编程的现状与展望

最近&#xff0c;一位同学使用GPT-4o将一个约300行的Python程序转换成Golang&#xff0c;正确率达到了90%。这引发了一个有趣的讨论&#xff1a;如果是整个项目规模的代码转换&#xff0c;准确率会如何&#xff1f;作为被的对象&#xff0c;我决定深入探讨这个话题&#xff0c;…

高等数学精解【6】

文章目录 直线与二元一次方程直线方程斜率两点式方程截距式方程将不同形式的直线方程转换为截距方程直线的一般方程直线一般方程的系数有一个或两个为零的直线 参考文献 直线与二元一次方程 直线方程 斜率 直线对于 x 轴的倾角&#xff0c;平行于 x 轴&#xff0c;倾角为 0 &…

从一个服务预热不生效问题谈微服务无损上线

作者&#xff1a;凡问、启淮 前言 本文基于阿里云技术服务团队和产研团队&#xff0c;在解决易易互联使用 MSE&#xff08;微服务引擎&#xff09;产品无损上线功能所遇到问题的过程总结而成。本文将从问题和解决方法谈起&#xff0c;再介绍相关原理&#xff0c;后进一步拓展…

jupyter下载

https://blog.csdn.net/qq_48372575/article/details/125630622 我下面是CPU运行的&#xff0c;GPU链接在上面 Anaconda下载 https://docs.anaconda.com/miniconda/miniconda-other-installer-links/ 参考链接&#xff1a; https://blog.csdn.net/qq_48372575/article/detai…

计算机编码 - 笔记

1 ASCII码 - 0- 127 2 ASCII码扩展字符集 - 128- 255

反转字符串(LeetCode)

题目 编写一个函数&#xff0c;其作用是将输入的字符串反转过来。输入字符串以字符数组 的形式给出。 不要给另外的数组分配额外的空间&#xff0c;你必须原地修改输入数组、使用 的额外空间解决这一问题。 解题 def reverse_string(s):left 0right len(s) - 1while left …

SDF Marching Cubes Ray-marching Teahouse

SDF & Marching Cubes & Ray-marching SDF SDF(Signed Distance Field)有向距离场。SDF是由到&#xff08;多边形模型&#xff09;物体表面最近距离的采样网格。作为惯例&#xff0c;使用负值来表示物体内部&#xff0c;使用正值表示物体外部。 Marching Cubes marc…

CUDA编程05 - GPU内存架构和数据局部性

一&#xff1a;概述 到目前为止&#xff0c;我们已经学会了如何编写 CUDA 核函数&#xff0c;以及如何设置和分配大量线程来执行核函数。我们还了解了当前 GPU 硬件的计算架构&#xff0c;以及线程在硬件上调度执行过程。在本章中&#xff0c;我们将重点关注 GPU 的片上(on-chi…

golang实现Digest认证鉴权接口

什么是Digest认证鉴权接口? Digest认证鉴权接口是一种基于摘要算法的身份验证方法,用于确保API请求的安全性。在实际应用中,常常使用HTTP协议的Digest认证鉴权接口来验证请求的合法性。下面是一种常见的Digest认证鉴权流程: 1. 客户端发送HTTP请求到服务器,请求接口资源…

【MCAL】TC397+EB-tresos之ADC配置实战 - (模数转换)

本篇文章首先从理论讲起&#xff0c;基于《MC-ISAR_TC3xx_UM_Adc.pdf》介绍了ADC模块的理论知识&#xff0c;然后详细介绍了在TC397平台使用EB-tresos对ADC驱动模块进行配置与调试的实战过程&#xff0c;帮助第一次接触这个模块的读者能够更快的上手来实现符合自己项目要求的开…

OSPF TE

OSPF TE&#xff08;OSPF Traffic Engineering&#xff0c;即OSPF流量工程&#xff09;是为了支持MPLS流量工程&#xff08;MPLS TE&#xff09;&#xff0c;支持建立和维护TE的标签交换路径LSP&#xff08;Label Switch Path&#xff09;而在OSPF协议基础上扩展的新特性。在MP…

Qt WebEngine基于WebEngineScript注入js脚本

在之前的文章中&#xff0c;我们介绍了Qt WebEngine注入js的用法&#xff0c;及runJavaScript()的用法&#xff0c;该方法主要是用在页面加载完成后&#xff0c;为了和网页做一些交互时使用。有时候需要监听网页加载完成的一些状态或信息&#xff0c;则需要网页加载前注入js来实…

【CodinGame】趣味算法(教学用) CLASH OF CODE -20240802

[toc] 正文 最大最小值 import math import sys# Auto-generated code below aims at helping you parse # the standard input according to the problem statement.a int(input()) b int(input()) c int(input()) d int(input())mylist [] mylist.append(a) mylist.app…

如何写好提示词?《Midjourney常用关键词大全》-附关键词文件

​ Midjourney如何写好提示词从而生成高质量图片&#xff1f; 并且随心所欲生成各种风格的图片&#xff1f; 这是一份关于Midjourney常用关键词的文件&#xff1a; 风格形式/摄影构图/灯光材质/渲染方式/常见设备/常见元素等不同类别&#xff0c; 关键词分门别类&#xff0…

从PyTorch官方的一篇教程说开去(6.2 - 张量 tensor 矩阵运算等)

您的进步和反馈是我写作最大的动力&#xff0c;小伙伴来个三连呗&#xff01;共勉~ 话不多说&#xff0c;书接上文&#xff0c;需要温习的小伙伴请移步 - 从PyTorch官方的一篇教程说开去&#xff08;6.1 - 张量 tensor 基本操作&#xff09;-CSDN博客 借图镇楼 - 1 - 矩阵乘…

【面经】 HR面试套路一览 | 10条面试要点总结

博客主页&#xff1a;Duck Bro 博客主页 关注博主&#xff0c;后期持续更新系列文章 如果有错误感谢请大家批评指出&#xff0c;及时修改 感谢大家点赞&#x1f44d;收藏⭐评论✍ 面经总结 目录 面经总结前言1. 期望薪资2. 关于加班的问题3. 平时是如何学习的&#xff08;学…

光电测径仪和激光测径仪的区别

光电测径仪和激光测径仪都是用于测量物体直径的精密仪器&#xff0c;它们在工作原理、测量范围、精度、适用场景等方面有所不同。光电测径仪通常使用CCD光电传感器来检测通过物体的光强度变化&#xff0c;而激光测径仪则使用激光作为测量信号&#xff0c;通过发射激光束并接收反…

IT服务质量管理攻略(至简)

质量管理、风险管理和信息安全管理是IT服务监督管理的重要内容&#xff0c;三者之间相对独立。IT服务质量管理是通过制订质量方针、质量目标和质量计划&#xff0c;实施质量控制、质量保证和质量改进活动&#xff0c;确保IT服务满足服务级别协议的要求&#xff0c;最终获得用户…

案例分享-国外UI设计界面赏析

国外UI设计倾向于简洁的布局和清晰的排版&#xff0c;减少视觉干扰&#xff0c;提升用户体验。通过合理的色彩搭配和图标设计&#xff0c;营造舒适愉悦的使用氛围。 设计师不拘泥于传统框架&#xff0c;勇于尝试新元素和理念&#xff0c;使界面独特有趣。同时&#xff0c;强调以…

班美净创始人钟书兰 引领美业新潮流,铸就美丽传奇

在竞争激烈的中国美业市场中&#xff0c;一位杰出的女性创业者凭借其独特的眼光、创新的理念和坚定的决心&#xff0c;开辟出了一片属于自己的辉煌天地。钟书兰&#xff0c;作为班美净的创始人&#xff0c;正以其卓越的领导力和对美的执着追求&#xff0c;在问题性皮肤管理领域…