全排列递归算法
public static void perm(int[] buf, int start, int end) { int temp; if (start == end) {// 当只要求对数组中一个字母进行全排列时,只要就按该数组输出即可 for (int i = 0; i <= end; i++) { System.out.print
public static void perm(int[] buf, int start, int end) { int temp; if (start == end) {// 当只要求对数组中一个字母进行全排列时,只要就按该数组输出即可 for (int i = 0; i <= end; i++) { System.out.print
1.升序数组中寻找两数相加等于K我使用的是双指针的方法,时间复杂度为o(n)老师讲还可以通过二分法来查找(比如从第一个开始,K-arr[0],二分法寻找数组中是否存在符合条件的数)//升序数组,找到两数之和等于K public static int[][] findTwoNumbers(int[] arr,int k){ int length = arr.length; int[]
本来想用回溯做的,结果发现了很多问题,需要添加很多特例才能成功跑完.../** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val
实际上就是利用递归、分治的思想将该数组不断进行划分排序。每一次划分,都保证pivot左边都是小于它的数,右边都是大于它的数。这样不断递归,确定每个位置上的pivot都符合要求,即可得到最终的结果。static int[] QuickSort(int[] arr, int p, int r){ if(p<r){ int q = partition(arr,p,r);
全部用jdk,很菜就是了...class Solution { public int lengthOfLongestSubstring(String s) { int sl = s.length(); if (sl < 2) { return sl; } int minLength = 0;