数据结构与算法
糖沁
小白最后的倔强,只为对得起曾经放弃的荣誉。
展开
-
27.移除元素
双层循环(时间复杂度:O(n2)) /** * 移除元素 双层for循环 * */ public int removeElementFor(int[] nums, int val) { int length = nums.length; for (int i = 0; i < length; i++) { //循环数组 if (nums[i] == val){ for (int.原创 2021-10-20 20:38:31 · 89 阅读 · 0 评论 -
367.有效的完全平方数
public boolean isPerfectSquare(int num) { if (num == 1){ return true; } if (num == 0){ return true; } int left = 1; int right = num; int mid = 0; while (left < ...原创 2021-10-19 23:41:59 · 71 阅读 · 0 评论 -
69.Sqrt(x)
/** * 69. Sqrt(x) * */ public int mySqrt(int x) { if (x == 1){ return 1; } if (x == 0){ return 0; } //对区间的定义均为「左闭右闭区间」,即循环不变量的定义是:在区间 [left..right] 里可能存在目标元素。 int le...原创 2021-10-19 23:21:26 · 70 阅读 · 0 评论 -
34.在排序数组中查找元素的第一个和最后一个位置
完整思路版本 public int[] searchRange(int[] nums, int target) { if(nums.length == 0){ return new int[]{-1,-1}; } int left = 0 , right = nums.length-1, mid; while (left < right) { //注意死循环 mid = (left原创 2021-10-19 21:52:53 · 51 阅读 · 0 评论 -
35.搜索插入位置
这题的关键就在于,只是把原704.二分查找中的最后一行return - 1;换成了return left 或 return right + 1就已经解决问题了。其实分情况一一分析,就是这么简单:1、目标值在数组中,return mid2、目标值比数组中任何一个值都要小,那其实就是left自始至终没动过,是right不断地向左移动,直至right == left == 0还是找不到,然后就是right = -1 小于 left,跳出循环,return left(left没移动过,一直为0) 或 ret.原创 2021-10-17 23:32:43 · 49 阅读 · 0 评论 -
704.二分查找(两种实现方式)
一、区间【 left , right 】,while循环结束的条件是left > rightclass Solution { public int search(int[] nums, int target) { int left = 0; int right = nums.length - 1; while(left <= right){ //注意 int mid = (left + right) / 2;原创 2021-10-17 22:25:30 · 88 阅读 · 0 评论 -
java实现一棵二叉树中最宽的那一层(或多层)的最大结点个数
代码示例(注释含思路):需要先熟悉二叉树的宽度遍历(如果不熟悉):java实现二叉树宽度遍历package com.zihao;import java.util.HashMap;import java.util.LinkedList;import java.util.Queue;/** 描述:一棵二叉树中最宽的那一层(或多层)的最大结点个数* */public class levelMostNodes { public Node node; public level原创 2021-08-17 15:09:29 · 171 阅读 · 0 评论 -
java实现二叉树宽度遍历
代码示例(注释含思路):package com.zihao;import java.util.LinkedList;import java.util.Queue;public class levelTraversal { public Node node; public levelTraversal(Node head){ this.node = head; } static class Node{ int value;原创 2021-08-17 15:07:27 · 201 阅读 · 0 评论 -
Java实现二叉树的前、序、后打印(非递归、栈)
代码示例(注释含写代码时思路):package com.zihao;import java.util.Stack;public class traverseDonRecurrence { /*3、发现二叉树没定义它的属性*/ public Node node; /*2、结点定义好了,构造或说初始化一棵二叉树呗*/ public traverseDonRecurrence(Node head){ this.node = head; }原创 2021-08-17 00:49:23 · 121 阅读 · 0 评论 -
Java实现二叉树的前、序、后打印(递归序思想)
代码示例(注释有写代码时思路):package com.zihao;public class traverseRecurrence { /*3、发现二叉树没定义它的属性*/ public Node node; /*1、成树之前得先有节点,所以先定义结点*/ static class Node{ int value; Node left; Node right; /*别忘了构造方法*/原创 2021-08-17 00:45:27 · 167 阅读 · 0 评论 -
史上最详细的快速排序(快排)讲解 妈咪级快速排序讲解
相信我:史上最详细的快速排序(快排)讲解 妈咪级快速排序讲解原创 2020-04-12 21:31:17 · 316 阅读 · 0 评论