java
爱科研的岩岩
这个作者很懒,什么都没留下…
展开
-
快排算法小结
private static int partition(int[] arr, int startIndex, int endIndex) { int left = startIndex; int right = endIndex; int pivot = arr[startIndex];//取第一个元素为基准值 while (true) { //从左往右扫描 while (arr[left] .原创 2021-07-21 21:56:48 · 109 阅读 · 0 评论 -
岛屿数量问题
岛屿数量 我们可以将二维网格看成一个无向图,竖直或水平相邻的 11 之间有边相连。 为了求出岛屿的数量,我们可以扫描整个二维网格。如果一个位置为 1,则以其为起始节点开始进行深度优先搜索。在深度优先搜索的过程中,每个搜索到的 1 都会被重新标记为 0。 最终岛屿的数量就是我们进行深度优先搜索的次数。 深度优先搜索算法 遍历整个二维数组,判断是否为‘1’,如果是则遍历 记住 dfs(grid,i,j) private void dfs我总是出错 写成public 终止条件:i和j是否越界,且grid[i][原创 2021-07-14 13:58:13 · 179 阅读 · 0 评论 -
最长上升子序列
动态规划 法一:动态规划 思路与算法 定义 dp[i] 为考虑前 i个元素,以第 i个数字结尾的最长上升子序列的长度,注意nums[i] 必须被选取。 初始化为dp[i]=1;即每个元素都为一个递增的起始点,长度为1;如果不初始化数量则会少1,出现错误。 状态方程 dp[i]=max(dp[j]+1) 即i的子串长度为前i-1个子串最大长度加一。 class Solution { public int lengthOfLIS(int[] nums) { int n=nums.le原创 2021-07-14 13:05:02 · 119 阅读 · 0 评论 -
旋转数组leedcode
给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。 进阶: 尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。 你可以使用空间复杂度为 O(1) 的 原地 算法解决这个问题吗? 第一个办法:创建一个新数组,然后再将原有数组copy。 class Solution{ public void romote(int [ ] arr , int k) { int n=arr.length; int [ ] a=new int[n]; for(int i=0;i<n;i++原创 2021-05-28 11:03:14 · 64 阅读 · 0 评论 -
2021-05-12 JAVA基础知识
JVM主要的三块内存:栈内存,堆内存,方法区。 方法区放代码片段 classloader将字节码文件装载到JVM中。 栈:在方法被调用时,方法需要的内存空间在栈中分配。栈存储局部变量。 堆:实例变量,在类中定义的,开辟在堆内存。存储对象以及对象的实例变量。 访问实例变量 引用.实例变量名。System.out.println(s1.no) 保存对象内存地址的变量叫引用。对象和引用区别。引用是 :但凡是变量,该变量保存了内存地址,指向堆内存当中的对象。对象是new创建的,在堆内存中存储。 抽象..原创 2021-05-12 18:51:32 · 63 阅读 · 0 评论 -
JAVA日常编程技巧
super super什么时候不可以省略:父类中有,子类中也有,想在子中继承父的特征 。super() super.super不是引用,不保存内存地址,super不指向任何对象。不能单独输出。** super.属性名 调用父类的属性 super.方法名(实参)调用父类的方法 super(实参)调用父类构造方法 this和super不能使用在静态方法中。main方法是静态的。**只能用在实例方法中。 构造方法 : 用来创建对象 ,是一个比较特殊的方法。完成对象创建和实例变量初始化。l类中没有提供任原创 2021-05-12 16:11:15 · 68 阅读 · 0 评论