<算法很美> 部分习题
1.升序数组中寻找两数相加等于K我使用的是双指针的方法,时间复杂度为o(n)老师讲还可以通过二分法来查找(比如从第一个开始,K-arr[0],二分法寻找数组中是否存在符合条件的数)//升序数组,找到两数之和等于K public static int[][] findTwoNumbers(int[] arr,int k){ int length = arr.length; int[]
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;
最开始以为是向前进1位卡了很久,结果原来是我想错了.../**Definition for singly-linked list.public class ListNode {int val;ListNode next;ListNode() {}ListNode(int val) { this.val = val; }ListNode(int val, ListNode next) { this.