三数之和

给定一个数组或输入一个数组,在数组里取三个数使这三个数等于一个特定的值target,并返回这三个数的下标,要求不能有重复的组合。

java 复制代码
package 例题;

import java.util.HashMap;
//三数之和
public class Test1 {
    public static void main(String[] args) {
        int[] arr = {1, 2, 3, 5, 7, 9, 11, 13, 16, 14, 15,18, 94, 42, 35};
        int target = 40;//三数之和
        HashMap<Integer, Integer> map = new HashMap<>();
        HashMap<Integer, Integer> map2 = new HashMap<>();
        for (int i = 0; i < arr.length; i++) {
            map.put(arr[i], i);
        }
        for (int i = 0; i < arr.length; i++) {
            int w =target-arr[i];
            int[] xx = get(arr,w);
            if(xx[0]!=-1){
                if(i!=xx[0]&&i!=xx[1]){
                    if(map2.get(i)==null||map2.get(xx[0])==null){
                        map2.put(i,i);
                        map2.put(xx[0],xx[0]);
                        map2.put(xx[1],xx[1]);
                        System.out.println("位置:"+i+","+xx[0]+","+xx[1]);
                    }
                }
            }
        }
    }
    public static int[] get(int[] arr,int target){
        HashMap<Integer, Integer> map = new HashMap<>();
        for (int i = 0; i < arr.length; i++) {
            map.put(arr[i], i);
        }
        for (int i = 0; i < arr.length; i++) {
            int w = target - arr[i];
            Integer index = map.get(w);
            if (index != null) {
                return new int[]{i, index};
            }
        }
        return new int[]{-1,-1};
    }

}
相关推荐
im_AMBER7 小时前
Leetcode 74 K 和数对的最大数目
数据结构·笔记·学习·算法·leetcode
t198751287 小时前
电力系统经典节点系统潮流计算MATLAB实现
人工智能·算法·matlab
断剑zou天涯7 小时前
【算法笔记】蓄水池算法
笔记·算法
长安er7 小时前
LeetCode 206/92/25 链表翻转问题-“盒子-标签-纸条模型”
java·数据结构·算法·leetcode·链表·链表翻转
唯道行8 小时前
计算机图形学·23 Weiler-Athenton多边形裁剪算法
算法·计算机视觉·几何学·计算机图形学·opengl
CoderYanger8 小时前
动态规划算法-01背包问题:50.分割等和子集
java·算法·leetcode·动态规划·1024程序员节
花月C8 小时前
个性化推荐:基于用户的协同过滤算法
开发语言·后端·算法·近邻算法
lxh01138 小时前
最长递增子序列
前端·数据结构·算法
Youyzq9 小时前
前端项目发布到cdn上css被编译失效问题rgba失效和rgb失效
前端·css·算法·cdn
风筝在晴天搁浅9 小时前
代码随想录 516.最长回文子序列
算法