avatar

目录
简单代码片段

自己写的求最大子串

plaintext
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
 static int[] arr={1, -2, 3, 10, -4, -7, 2, -5, -99, 10, 45, -4 ,5};

@Test
public void test91(){

int[] resut=getSubArr(arr);
System.out.println("最大子串="+StringUtils.join(Arrays.copyOfRange(arr,resut[0],resut[1]+1),','));
System.out.println("左侧="+resut[0]+",右侧="+resut[1]+",最大值="+resut[2]);
}

private static int[] getSubArr(int[] arr){

int[] mArr=new int[arr.length],leftArr=new int[arr.length];
mArr[0]=arr[0];
leftArr[0]=0;
int right=0;
int max=arr[0];
int maxIndex=0;
for (int i=1;i<arr.length;i++){
if(max>0){
max+=arr[i];
leftArr[i]=leftArr[i-1];
}else {
max=arr[i];
leftArr[i]=i;
}

mArr[i]=max;
if(mArr[maxIndex]<max){
right=maxIndex=i;
}
}

return new int[]{leftArr[maxIndex],right,mArr[maxIndex]};
}

// 别人写的求最大子串和
@Test
public void test92(){

int max = arr[0];
int res = arr[0];
for (int i = 1; i < arr.length; i++) {
// 让i-1的最优解和i比较
max = Math.max(max+arr[i], arr[i]);
res = Math.max(max, res);
System.out.println("up value:" + max + "当前索引的值:" + i);
}
System.out.println("最大值="+res);
}


自己写的快排

plaintext
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
private static void swap(int[] a,int l,int r){
if(l==r)return;
a[l]=a[l]+a[r];
a[r]=a[l]-a[r];
a[l]=a[l]-a[r];
}
public static void sort(int[] a,int l,int r){
if(l>=r)return;
int k=partition(a, l, r);
//swap(a, l, k);
sort(a, l, k-1);
sort(a, k+1, r);
}
public static int partition(int[] a,int l,int r){
int base=a[l];
while(l<r){
while(l<r&&a[r]>base){
r--;
}
while(l<r&&a[l]<base){
l++;
}
if(l<r)
swap(a,l,r);
}
return l;
}
@Test
public void testSwap(){
int[] a={1,2,3};
swap(a, 0, 2);
System.out.println(StringUtils.join(ArrayUtils.toObject(a), ','));
}
@Test
public void testSort(){
int[] a={6,5,1,2,4,1,4,3,2,1};
sort(a, 0, a.length-1);
System.out.println(StringUtils.join(ArrayUtils.toObject(a), ','));
Arrays.sort(a);
System.out.println(StringUtils.join(ArrayUtils.toObject(a), ','));

}

网上的快排例子

plaintext
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
// 快速排序 ************************************
public static void QuickSort(int[] a, int left, int right) {
// 如果 left 等于 right,即数组只有一个元素,直接返回
if (left >= right) {
return;
}
// 设置最左边的元素为基准值
int key = a[left];
// 数组中比 key 小的放在左边,比 key 大的放在右边,key 值下标为 i
int i = left;
int j = right;
while (i < j) {
// j 向左移,直到遇到比 key 小的值
while (a[j] >= key && i < j) {
j--;
}
// i 向右移,直到遇到比 key 大的值
while (a[i] <= key && i < j) {
i++;
}
// i 和 j 指向的元素交换
if (i < j) {
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
a[left] = a[i];
a[i] = key;
QuickSort(a, left, i - 1);
QuickSort(a, i + 1, right);
}

private static void print(int[] a){
for (int i : a) {
System.out.print(","+i);
}
}
@Test
public void testSort() {
int[] a = { 6,5,4,3,2,1};
QuickSort(a, 0, a.length - 1);
print(a);
}
plaintext
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class RegexDemo {

@Test
public void replaceTest(){
System.out.println("sljfls,,,,".replaceAll(",+$", ""));
}


@Test
public void replaceTest1(){
List<String> list=Arrays.asList("000","010","099","800","990","909","009","0","09","90","8","00");
for(String s:list)
System.out.println(s+"->"+s.replaceAll("^0{1,2}(?=\\d{1,2})", ""));
}
}

雪花算法

参考网上例子

好像记得有bug的。。魔改版

魔改版魔改测试类

获取当前方法名(堆栈中获取)

DateHelper没啥用处就不列了

文章作者: thf
文章链接: http://pcbopcbo.github.io/2020/07/15/2020071517/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 漂泊的个人笔记

评论