package bianchengti; /* * 在由N个元素构成的集合S中,找出最小元素C,满足C=A-B, * 其中A,B是都集合S中的元素,没找到则返回-1 */ public class findMinValue { //快速排序 public static void sort(int a[], int low, int hight) { if (low > hight) { return; } int i, j, key; i = low; j = hight; key = a[i]
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,
Given an array of size n, find the majority element. The majority element is the element that appears more than ⌊ n/2 ⌋ times. You may assume that the array is non-empty and the majority element always exist in the array. 这里题目要求找出出现次数超过n/2的元素. 可以先排序,
题目: 给定一个数组candidates和一个目标值target,求出数组中相加结果为target的数字组合: 举例: For example, given candidate set [2, 3, 6, 7] and target 7, A solution set is: [[7],[2, 2, 3]] 从举例中可以看出,同一个数字可以使用多次,且结果是唯一的: 解题思路: 我个人感觉该题目一点也不难,其实也是一个递归的过程,当达到递归条件时,就将结果加入结果集: 首先题目没说给的数组有啥特
就是找x+y=-z的组合 转化为找出值为-z满足x+y=-z的组合 解法一: 为了查找,首先想到排序,为了后面的二分,nlogn, 然后x+y的组合得n^2的复杂度,加上查找是否为-z,复杂度为nlogn + n^2 * logn 解法二: 还是先从小到大排序 nlogn 假设数组排序后为 a b c d e f 我们还是要找x+y=-z 会发现-z存在的可能只能是a+f和b+e,不会存在a+e和b+f这种情况(这里很重要,保证了算法的正确性),所以两个指针一头一尾往中间扫,肯定能找出来 fis
package day01; import java.util.Arrays; import java.util.Random; public class MaxOfArray { public static void main(String[] args) { int[] arr = new int[10]; Random ran = new Random(); //随机生成数 for(int i = 0;i<=9;i++) { arr[i] = ran.nextInt(100); } Sys
class Solution { public int[] twoSum(int[] nums, int target) { for (int i = 0; i < nums.length;i++){ for(int j = i + 1;j < nums.length;j++){ if (nums[j] == target - nums[i]){ return new int
利用改进的快排方法 public class QuickFindMaxKValue { public static void main(String[] args) { int[] a = {8, 3, 4, 1, 9, 7, 6, 10, 2, 5}; System.out.println(findMaxValue(a, 0, a.length - 1, 2)); } private static int findMaxValue(int[] a, int lo, int hi, int ma