数据结构与算法
文章平均质量分 88
only two hands
这个作者很懒,什么都没留下…
展开
-
剑指offer
1.数组中重复的数字题目找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。思路:大小不超过数组下标代码class Solution { public int findRepeatNumber(int[] nums) { int len = nums.length; /**原创 2021-04-10 12:28:50 · 723 阅读 · 0 评论 -
树
树节点深度:对任意节点x,x节点的深度表示为根节点到x节点的路径长度。所以根节点深度为0,第二层节点深度为1,以此类推树的深度:一棵树中节点的最大深度就是树的深度,也称为高度深度为K的二叉树:最多2k-1个结点,第k层最多2(k-1)个结点。二叉树中,叶子结点数 = 度为2的结点数 + 11、满二叉树:叶子节点都在同一层并且除叶子节点外的所有节点都有两个子节点。2、完全二叉树对于一颗二叉树,假设其深度为d(d>1)。除第d层外的所有节点构成满二叉树,且第d层所有节点从左向右连续地紧原创 2021-04-10 12:27:21 · 399 阅读 · 0 评论 -
leetcode前200
1、(数组)两数之和-简单题目给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。思路暴力解法时间复杂度O(n^2)使用hashmap,判断目标值-每个值是否存在。定义一个key为数组值,value为对应下标的hashmap,依次遍历数组并在hashmap中找是否含有“遍历值-target”的key,如果含有就说明存在与遍历值之和等于target的数,即可返回遍历值下标与另外一个值下标【ha原创 2021-04-10 12:26:52 · 213 阅读 · 0 评论 -
栈与队列
关于java栈类:Stack<>:Java堆栈Stack类已经过时,Java官方推荐使用Deque替代Stack使用。Deque堆栈操作方法:push()、pop()、peek()。详细解释Deque<T> stack = new ArrayDeque<>();stack.push(数据);T stack.peek();T stack.pop();队列Queue<T> queue = new Queue<>();boolean原创 2021-04-10 12:25:44 · 107 阅读 · 0 评论 -
链表
链表类题目(24)两两交换链表中的节点-中等题目给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。思路1:常规迭代代码1/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int原创 2021-04-10 12:24:43 · 54 阅读 · 0 评论 -
数组
数组类题目双指针(26)删除数组中的重复项-简单题目给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。思路暴力解法遇见重复的直接将后面的元素向前移时间复杂度O(n^2)代码class Solution { public int removeDuplicates(int[] nums) { in原创 2021-04-09 11:55:37 · 67 阅读 · 0 评论