数据结构和算法
数据结构和算法刷题及相关文章
BeinfluentialSun
To be the influential like the sunshine smile.
展开
-
复杂度-常见排序和查找算法
希望以下排序和查找算法能帮到大家,未来也有做各分类的题解的打算,欢迎一起讨论。搜索和排序算法二分搜索int binary_search(int[] nums, int target) { int left = 0, right = nums.length - 1; while(left <= right) { int mid = left + (right - left) / 2; //注意 if (nums[mid] < target原创 2020-09-13 13:44:11 · 624 阅读 · 1 评论 -
BFS/DFS-Leetcode515. 在每个树行中找最大值
515. 在每个树行中找最大值输入: 1 / \ 3 2 / \ \ 5 3 9 输出: [1, 3, 9]BFS每层进行一次遍历/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) {原创 2020-08-13 13:08:42 · 172 阅读 · 0 评论 -
回溯-Leecode46-全排列
Leecode-46全排列回溯算法核心框架for 选择 in 选择列表:# 做选择将该选择从选择列表移除路径.add(选择)backtrack(路径, 选择列表)# 撤销选择路径.remove(选择)将该选择再加入选择列表class Solution { List<List<Integer>> res = new LinkedList<>(); public List<List<Integer>> perm原创 2020-08-10 19:51:02 · 197 阅读 · 0 评论 -
LeeCode-[450. 删除二叉搜索树中的节点]
450. 删除二叉搜索树中的节点题目给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。一般来说,删除节点可分为两个步骤:首先找到需要删除的节点;如果找到了,删除它。说明: 要求算法时间复杂度为 O(h),h 为树的高度。示例:root = [5,3,6,2,4,null,7]key = 3给定需要删除的节点值是 3,所以我们首先找到 3 这个节点,然后删除它。一原创 2020-08-08 22:40:54 · 107 阅读 · 0 评论 -
HashSet-剑指offer-JZ50数组中重复的数字
JZ50 数组中重复的数字题目描述在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。Set<Integer> set = new HashSet<Integer>(); for(int i =0 ;i<length;i++){原创 2020-07-07 16:41:50 · 124 阅读 · 0 评论