IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 2021-7-9三数之和 -> 正文阅读

[Python知识库]2021-7-9三数之和

题目描述

在这里插入图片描述

解法一 暴力解法

万物都可以暴力,只不过一般用暴力解法都会超时
遍历出所有的子串数组
然后挑出选择条件的,然后再排除重复的即可。
不推荐效率很低很容易超时!

解法二 双指针

建立动态数组
List<List> res=new ArrayList<>();
边界条件
length<3 return new ArrayList<>() 相当于python中的[]
其实这个和两数之和是一样的,只不过我们要排除掉重复的
先将数组进行排序
Arrays.sort();
先用for循环 第一个数字肯定是负数
然后选择第一次出现的数字
后面再选择第二个数字 用left控制
第三个数字用 right控制

代码

class Solution {
    public List<List<Integer>> threeSum(int[] nums) {
        int length=nums.length;
        List<List<Integer>>res=new ArrayList<List<Integer>>(); 
        if (length<3)return new ArrayList<>();
        Arrays.sort(nums);
        
        for(int i=0;i<length;i++){
            //当他不为负数直接跳过,相加无法为0
            if(nums[i]>0)break;
            //跳过第一个重复数字
            if(i>0 &&nums[i]==nums[i-1] ){ // 确保第一个数字是第一次出现,将前面重复的去掉
                continue;
            }
            int first=nums[i];
             int left=i+1;
            int right=length-1;
            while(left<right){
            if(nums[left]+nums[right]+first>0){ //就算有重复数字也会这样跳没掉
                right--;
            }
            else if(nums[left]+nums[right]+first<0){
                left++;
            }
            else{
                List<Integer>list=new ArrayList<Integer>();
                list.add(first);
                list.add(nums[left]);
                list.add(nums[right]);
                res.add(list);
                while(left<right&&nums[left]==nums[left+1]){
                    left++;
                }
                while(left<right&&nums[right]==nums[right-1]){
                    right--;
                }
                left++;
                right--;
            }
            }
           
          
        }
        return res;
    }
}
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-07-10 14:30:21  更:2021-07-10 14:32:07 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/3 14:09:57-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码