算法
算法是思路,思路决定出路
jone1024
真正的失败,不是倒下,而是不再站起来了
展开
-
插入排序与数组查重
插入排序与数组查重 //插入排序 public static void main(String[] args) { Random random = new Random(); int [] arr = new int[12]; for (int i = 0; i < arr.length; i++) { arr[i] = random.nextInt(12)+8; } System.原创 2021-06-26 06:09:22 · 303 阅读 · 0 评论 -
线程死锁_hashMap参数
多线程1、模拟一个线程死锁package com.m.sort;public class Test2 { private static final Object obj1 = new Object(); private static final Object obj2 = new Object(); public static void main(String[] args) { new Thread(()->{ synchr原创 2020-12-26 16:30:14 · 93 阅读 · 0 评论 -
堆排-元素去重-查找问题
堆排序与元素去重及查找问题1、堆排序与元素去重package com.m.sort;import java.util.Arrays;import java.util.Random;public class Test2 { public static void main(String[] args) { Random random = new Random(); int[] arr = new int[12]; for (int i =原创 2020-12-22 15:22:52 · 279 阅读 · 1 评论 -
递归问题(2020-12-21)
递归问题1、⼀个有 n 级的台阶,⼀次可以⾛ 1 级、2 级或 3 级,问⾛完 n 级台阶有多少种⾛法?public static int test(int n) { if(n < 0) { return 0; }else if(n == 0) { return 1; }else { return test(n-1)+test(n-2)+test(n-3); }}**2.**古典问题:⼀对兔⼦有⼀对兔⼦,从出⽣原创 2020-12-21 15:04:03 · 424 阅读 · 2 评论 -
经典算法_杨辉三角,集合法
经典算法_杨辉三角,集合法代码编写环境:VSCode2017杨辉三角:#include<stdio.h>int main() { int a[10][10]; int i,j; //1、给二维数组赋初值 for (i = 0; i < 10; i++) { for (j = 0; j <= i; j++) { a[i][j] = 0; } } //2、给二维数组的第一列和对角线赋值1 for (i = 0; i < 10;原创 2020-10-19 16:20:27 · 141 阅读 · 0 评论 -
删除排序数组中的重复项再练习
删除排序数组中的重复项再练习package com.m.algorithm;import java.util.Arrays;import java.util.Random;public class Test { //1、删除排序数组中的元素 public static int test(int [] nums){ int n = nums.length; if(n == 0) { return 0; } int index = 1; for (int i =原创 2020-11-22 11:02:43 · 93 阅读 · 0 评论 -
计数排序_数组与集合时间比较
计数排序_数组与集合时间比较### Integer []与ArrayList比较package com.m.demo;import java.util.ArrayList;import java.util.List;import java.util.Random;public class Test1 { public static void main(String[] args) { List<Integer> list = new ArrayList<Integ原创 2020-11-22 10:37:03 · 95 阅读 · 0 评论 -
插入排序与二分查找与CopyOnWrite 写时复制思想
插入排序与二分查找package com.m.test;import java.lang.reflect.Constructor;import java.util.ArrayList;import java.util.Arrays;import java.util.List;import java.util.Random;import java.util.concurrent.CopyOnWriteArrayList;public class Test2 { public st原创 2020-11-14 11:01:52 · 60 阅读 · 0 评论 -
稳定的算法用于对象排序
稳定的算法用于对象排序插入与归并等,稳定算法用于对象排序插入排序package com.m.algorithm;import java.util.Arrays;public class Test { /** 深入学习排序算法的思路 * 冒泡 选择 * * 插入(二分) O(n^2) 归并(多路) * * 希尔 堆排 快排 * * 计数 桶排 基数 * * * @param args */ public static void原创 2020-10-30 11:09:05 · 122 阅读 · 0 评论 -
链表排序之快排与归并(递归与非递归)
链表排序之快排与归并(递归与非递归)1.对链表进行快速排序以【4,2,5,3,7,9,0,1】为例,我们来模拟一趟快排的过程。**1、**初始化时,i指向链表首元素4;j = i +1,指向2。基准数字为当前i 指向的数字:4。j42537901i**2、**随后开始循环,j 当前指向2,因为2小于4,所以要把2移动到前面去。按照我们的算法步骤操作:i ++,首先 i 向后移动一位,指向2swap(i, j) ,随后原创 2020-10-15 21:36:44 · 199 阅读 · 0 评论 -
LeetCode题解——四数之和
LeetCode题解——四数之和我的LeetCode代码集:https://github.com/cnamep001/LeetCode原题链接:https://leetcode-cn.com/problems/4sum/description/思路一:用Set集合来过滤重复元素用一个哈希表存储数组中两个数的和,以及形成这个和可能的索引组合的List。虽然我们的Set集合能够自动帮我们过滤掉重复的List,但是过滤的前提是我们得到的List必须是有序的。比如**(0, 1, -1, 0)和(0,原创 2020-10-13 11:55:03 · 137 阅读 · 0 评论 -
LeetCode题解——最长回文子串
LeetCode题解——最长回文子串我的LeetCode代码集:https://github.com/cnamep001/LeetCode原题链接:https://leetcode-cn.com/problems/longest-palindromic-substring/description/题目描述:思路一:用二维数组对于动态规划这一思路而言,思路四中时间复杂度的过高,一定是状态定义选择不当。我们换一种状态定义方法。状态定义:f(x, y)表示区间[x, y]范围的子串是否是回文子原创 2020-10-12 09:15:19 · 205 阅读 · 0 评论 -
链表排序之快排与归并
链表排序之快排与归并1.对链表进行快速排序以【4,2,5,3,7,9,0,1】为例,我们来模拟一趟快排的过程。**1、**初始化时,i指向链表首元素4;j = i +1,指向2。基准数字为当前i 指向的数字:4。j42537901i**2、**随后开始循环,j 当前指向2,因为2小于4,所以要把2移动到前面去。按照我们的算法步骤操作:i ++,首先 i 向后移动一位,指向2swap(i, j) ,随后交换 i、j 位原创 2020-10-11 14:46:40 · 224 阅读 · 0 评论 -
LeetCode题解——字符串转整数(atoi)
LeetCode题解——字符串转整数(atoi)我的LeetCode代码集:https://github.com/cnamep001/LeetCode原题链接:https://leetcode-cn.com/problems/string-to-integer-atoi/description/题目描述:知识点:字符串思路:顺序遍历字符串,根据题意读取整数对于这一题来说,难点不在算法的实现上,难点在理解题意并正确处理各种边界或者特殊情况上。(1)如果第一个非空字符是正号或负号,选取该符原创 2020-10-11 10:41:43 · 110 阅读 · 1 评论 -
堆排序与选择排序的关联
堆排序与选择排序的关联一、简单选择排序基本思想:假设排序表为 L[1…n] ,第i趟排序即从L[i,n] 中选择关键字最小的元素与 L(i) 交换,每一趟排序可以确定一个元素的最终位置,这样经过 n-1 趟排序就可以使整个排序表有序。选择排序的执行过程为每次循环遍历数组找出最小(或最大)的数,将其放在数组的有序数列的最后面,每次第i次遍历查找要执行N-i个单位时间,然后要执行N次,故时间复杂度为O(N^2),很简单,比较适合较小的数列的排序。代码如下:public static v原创 2020-10-10 20:31:39 · 243 阅读 · 1 评论 -
递归原则
递归1、递归次数不要太多,太占内存2、递归一定要有出口3、构造方法不能递归使用三种方法实现实例:package test17_digui;import java.util.Scanner;/* * 题目:有一对兔子,从出生后第3个月起每个月都生1对兔子,小兔子第三个月后也可以生一对兔子, * 假如兔子不死,在指定月份时刻一共可以有多少对兔子 * * 分析: * 第一个月:1 * 第二个月:1 * 第三个月:2 * 第四个月:3 * 第五个月:5原创 2020-10-10 18:59:57 · 190 阅读 · 0 评论 -
题解LeetCode——两数之和
题解LeetCode——两数之和我的LeetCode代码集:https://github.com/cnamep001/LeetCode原题链接:https://leetcode-cn.com/problems/two-sum/description/题目描述:思路一:利用哈希表来记录nums数组中每一个索引所对应的数字对于这道题来说,如果题目要求我们返回的是满足条件的两个数字,而不是这两个数字所对应的索引值,那么我们完全可以先对nums数组进行一次排序,再用对撞双指针的方法求解。根据这个思路原创 2020-10-10 18:55:38 · 94 阅读 · 0 评论 -
题解LeetCode——回文数
题解LeetCode009——回文数我的LeetCode代码:https://github.com/cnamep001/LeetCode原题链接:https://leetcode-cn.com/problems/palindrome-number/description/题目描述: 知识点:字符串、集合、数学思路一:翻转数字,判断是否和原数字相等翻转过程中注意越界的情况,如果越界,直接返回false。事实上如果翻转之后越界了,肯定就不会和原数字相等了,我们在代码实现时无需考虑这种情况。原创 2020-10-09 15:20:38 · 115 阅读 · 0 评论 -
题解LeetCode--三数之和
我的LeetCode代码:https://github.com/cnamep001/LeetCode原题链接:https://leetcode-cn.com/problems/3sum/description/三数之和–LeetCode015题目描述:知识点:哈希表,对撞双指针三重循环遍历nums数组。时间复杂度是O(n ^ 3),其中n为数组nums的长度。空间复杂度是O(1)。JAVA代码:package com.zhizhu.test;import java.util.ArrayL原创 2020-10-09 14:32:31 · 131 阅读 · 0 评论 -
哈希碰撞与生日攻击
SQL语言功能:数据操作语言,DML,操作数据表里的数据的,create,转载 2020-10-06 12:07:21 · 766 阅读 · 0 评论 -
排个序的算法
&&,||,&,|短路与长路 int i = 1; int j = 2; System.out.println(i++ == j && i == j-- );//false System.out.println(i);//2 System.out.println(j);//2 System.out.println(i++ == j && i == j-- );//false System.out.printl原创 2020-07-27 00:57:47 · 144 阅读 · 0 评论