leetcode
来源:互联网 发布:网络彩票赌博怎么举报 编辑:程序博客网 时间:2024/06/03 20:20
1.twoSum
import java.util.HashMap;import java.util.Map;/*用一个map存储,有空间复杂度,时间复杂度o(n)* */public class twoSum { public static void main(String args[]){ int[] data = {2, 7, 11, 15}; int[] result = twoSumdemo(data,9); System.out.println(result[0]+","+result[1]); } public static int[] twoSumdemo(int[] nums, int target) { MaptempMap = new HashMap<>(); for(int i=0;i
如果说 不要求返回下标,要求输出所有情况,可以把value变成次数,然后判断如果不存在继续走,如果存在value 次数加1后继续走,输出的时候 根据次数决定输出多少遍
3sum,3个数相加为0
Given an array S of n integers, are there elements a,b,c in S such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero.
Note: The solution set must not contain duplicate triplets.
For example, given array S = [-1, 0, 1, 2, -1, -4],A solution set is:[ [-1, 0, 1], [-1, -1, 2]]
算法:
先排序,小到大
一次for循环,i从前往后走,设置j=i+1 为i的下一位,k=length-1 为最后一位, j,k两个指针,如果nums[i]+nums[j]+nums[k]==0 j往后走,k往前走,则输入到list中,否则 如果>0 前面的j 往后移一位,如果<0,后面的k往前移一位,
去除重复数据:在for循环里面 判断,如果if(i==0||nums[i]>nums[i-1]){执行,如果i喝前一个一样跳过,找到合围0的数时,判断j,k和下一个如果一样,跳过
import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.List;public class threesum { /* 3sum,3个数相加为0 算法: 先排序,小到大 一次for循环,i从前往后走,设置j=i+1 为i的下一位,k=length-1 为最后一位, j,k两个指针,如果nums[i]+nums[j]+nums[k]==0 j往后走,k往前走,则输入到list中,否则 如果>0 前面的j 往后移一位,如果<0,后面的k往前移一位, 去除重复数据,即重复数据只用一次: 在for循环里面 判断,如果if(i==0 || nums[i] > nums[i-1]) {执行,如果i和前一个一样跳过,找到合围0的数时,判断j,k和下一个如果一样,跳过 */ public static List> threeSum(int[] nums) { List
> result = new ArrayList
>(); if(nums == null || nums.length<3) return result; Arrays.sort(nums); for(int i=0; i
nums[i-1]){ int j=i+1; int k=nums.length-1; while(j l = new ArrayList (); l.add(nums[i]); l.add(nums[j]); l.add(nums[k]); result.add(l); j++; k--; //handle duplicate here while(j
fourSum
算法: 和3数相加一样,第一层 for循环i,(如果 i!= 0 && num[i] == num[i-1]]和之前相等跳过)第二层for循环 j (i+1)(如果和之前相等跳过),定义j 和k指针,
注意去重
import java.util.ArrayList;import java.util.Arrays;import java.util.List;public class fourSum { public static List> fourSum(int[] nums, int target) { List
> result = new ArrayList
>(); if(nums==null|| nums.length<4) return result; Arrays.sort(nums); for(int i=0; i
target){ l--; }else{ List t = new ArrayList (); t.add(nums[i]); t.add(nums[j]); t.add(nums[k]); t.add(nums[l]); result.add(t); k++; l--; while(k
阅读全文
0 0
- leetcode
- [leetcode]
- LeetCode
- leetcode
- leetcode
- leetcode:
- leetcode:
- LeetCode
- leetcode
- LEETCODE
- leetcode
- leetCode
- leetcode
- [leetcode]
- LeetCode
- leetcode
- leetcode:
- leetcode
- 《大型门户网站是这样炼成的》 项目源码视频教程免费下载
- textarea 存储与显示 保持格式
- 【python爬虫01】使用requests库模拟登录知乎
- 文章标题
- Android Studio使用jakewharton:butterknife
- leetcode
- MySQL 数据库设计总结
- LeetCode-4-Median-of-Two-Sorted-Arrays 递归求两有序数组第k小
- [Noip2016]换教室 解题报告
- 【Linux学习笔记】25:用户自定义变量
- NYOJ 2356 哈希计划(模拟)
- HUD-1002(大位数加法)
- jeecms系统使用介绍
- UVALive 4764 Bing it