数据结构
optisystem15
上班中
展开
-
链表和数组的排序---持续更新
链表的排序1.对链表使用插入排序:第一步: 判断链表是否为空,如果为空,不需要进行排序,直接返回。第二步:数组排序:快速排序第一步: 选定中心轴(pivot)第二步: 小于中心轴的放左边第三步: 大于中心轴的放右边第四步: 递归调用 public int[] sortArray(int[] nums) { // 1. 快速排序 randomizedQuicksort(nums, 0, nums.length - 1); ret原创 2021-01-17 23:39:46 · 387 阅读 · 0 评论 -
Java最大子序和
// if(sum > max ) max = sum ;// - 1 -2 4 这种情况,先让前面的全为0if(sum< 0 ) sum = 0;public int maxSubArray(int[] nums) { int sum = 0; int max = Integer.MIN_VALUE; for(int i =0;i<nums.length;i++){ sum = sum + nu.原创 2020-12-29 19:45:59 · 76 阅读 · 0 评论 -
回味链表、字符串、数组
回文链表第一步找到中心节点。使用的方法是快慢指针的方法。需要把节点分为奇数和偶数。最开始的判断 if(head == null || head.next == null){ return true; }定义指针fast为快指针,slow为慢指针,pre为slow前面的指针,作用是用来隔绝中间节点//定义快慢指针ListNode fast = head , slow = head ,pre = null;while(fast !=null &原创 2020-12-28 16:28:56 · 53 阅读 · 0 评论 -
Java中关于排序的总结
第一题:两个数组的交集: 双指针遍历,排序解法:原创 2020-12-25 13:52:42 · 42 阅读 · 0 评论 -
Java中关于二分查找的问题
第一题:搜索插入的位置二分查找的时间复杂度为O(log n)先设定左侧下标left,右侧下标right,再计算中间下标mid每次根据nums[mid]和target之间的大小进行判断,相等则直接返回下标,nums[mid]<target则left右移,nums[mid]>target则right左移查找结束如果没有相等则返回left另外的解法:...原创 2020-12-25 00:28:30 · 173 阅读 · 0 评论 -
Java中关于树的总结
第一道题:二叉树的深度:树的遍历分为:DFS 、 BFS求树的深度需要遍历树的所有节点。使用递归的方法树的深度= max(左树深度,右数深度)+1;计算左子树的深度: maxdepth(root.left)计算右子树的深度:maxdepth(root.right)return( maxdepth(root.left),maxdepth(root.right))+1;第二道题:平衡二叉树:定义:如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。返回值:1.原创 2020-12-21 22:08:37 · 269 阅读 · 2 评论