ICode9

精准搜索请尝试: 精确搜索
  • 【Rust】树07-平衡二叉树2022-07-30 23:31:52

    环境 Time 2022-04-21 Rust 1.60.0 前言 说明 基于标准库来学习各种数据结构,并不是从头实现数据结构,未考虑实现性能。 二叉树有个不好的地方,就是在最坏情况下,可能退化成单链表的结构。 比如按从小到大的顺序插入,节点都在右孩子上,平衡二叉树(AVL)可以解决这种情况。 示例 引入模块

  • 数据结构与算法--二分查找2022-07-29 22:31:46

    简介 二分查找又称折半查找、二分搜索、折半搜索等,是在分治算法基础上演变的查找算法 二分查找算法仅适用于有序序列,它只能用在升序序列或者降序序列中查找目标元素 二分查找局限性 依赖数组结构 二分查找需要利用下标随机访问元素,如果使用链表等其他数据结构则无法实现二分查

  • 二叉树的最大深度2022-07-29 19:03:35

    给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 示例: 给定二叉树 [3,9,20,null,null,15,7], 3 / 9 20 / 15 7 返回它的最大深度 3 。 作者:力扣 (LeetCode) 链接:https://leetcode.cn/lee

  • LeetCode 108 Convert Sorted Array to Binary Search Tree DFS2022-07-29 06:31:26

    Given an integer array nums where the elements are sorted in ascending order, convert it to a height-balanced binary search tree. A height-balanced binary tree is a binary tree in which the depth of the two subtrees of every node never differs by more tha

  • 二叉排序树逻辑分析及代码实现2022-07-28 23:04:00

    二叉排序树主要有插入,删除这两个操作,二叉排序树是基于中序输出实现的,所以需满足左指针节点数据<节点数据<右指针节点数据   首先二叉排序树的数据类型定义为结构体,数据包含数据,节点的左指针,节点的右指针 1 struct node 2 { 3 int key; 4 node* left; 5 node* right;

  • 算法练习-最长无重复子串2022-07-28 13:37:11

    // ------------------最长无重复子串---------------------------- var lengthOfLongestSubstring = function(s) { let max = 0 let left = 0 let right = 1 let l = 0 let r = 0 if (s.length === 0 || s.length === 1) return s.length while (r

  • js操作dom2022-07-28 12:33:32

    给src赋值 $('#setUrl').attr('src', data.data) $('#setUrl').attr('data-id', data.data)  设置css样式 var css = { 'background-color': '#EEE', height: '500px', margin: '1

  • 力扣练习——44 路径总和 III2022-07-28 11:35:56

    1.问题描述 给定一个二叉树,它的每个结点都存放着一个整数值。 找出路径和等于给定数值的路径总数。 路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。 二叉树不超过1000个节点,且节点数值范围是 [-1000000,1000000] 的整数。   示例:

  • LeetCode 103 Binary Tree Zigzag Level Order Traversal 双端队列 Deque2022-07-28 04:33:41

    Given the root of a binary tree, return the zigzag level order traversal of its nodes' values. (i.e., from left to right, then right to left for the next level and alternate between). Solution 由于是 \(zigzag\) 的形式,刚开始的思路是用 \(stack\) 来维护反序,但是

  • 写一个代码,在arr数组中找到7 分别用循环法和二分法2022-07-28 01:00:49

    循环法 1 #define _CRT_SECURE_NO_WARNINGS 1 2 #include<stdio.h> 3 int main() 4 { 5 int arr[] = { 1,2,3,4,5,6,7,8,9,10 }; 6 int k = 6,num,i; 7 num = sizeof(arr) / sizeof(arr[0]); 8 for (i = 0; i < num; i++) 9 { 10

  • 五大算法之二分搜索2022-07-28 00:33:21

    概述   二分搜索是常见的搜索算法,能够将有序数组搜索的线性复杂度降低到对数级别。搜索过程每次取搜索区间内的中间元素,如果等于目标元素则直接返回结果;如果大于或小于目标元素,则将搜索区间缩短到对应的一半元素范围,继续搜索,直至搜索区间为空。当然二分搜索不限于找目标值,寻找左

  • 力扣 题目99- 验证二叉搜索树2022-07-27 19:35:28

    题目 题解 在力扣 题目98- 验证二叉搜索树中 我们知道了 中序遍历后的二叉搜索树 应该为递增 那么出错就应该是有部分递减 那么我们在98题的基础上 反向检测 保存减少数列的开头与结尾进行交换 代码 1 #include<iostream> 2 #include<vector> 3 #include<stack> 4 using n

  • 二次剩余与 Cipolla 算法2022-07-27 19:00:58

    二次剩余 对于 \(P,n\),若存在 \(x\),满足: \[x^2≡n\pmod p \]则称 \(n\) 为模 \(P\) 意义下的二次剩余。 勒让德符号 定义如下: \[\left(\frac{n}{p}\right)= \begin{cases} 1,&n\text{ 在模 $p$ 意义下是二次剩余}\\ -1,&n\text{ 在模 $p$ 意义下是非二次剩余}\\ 0,&n\equiv0\pmod

  • 二分法2022-07-26 19:07:24

    二分查找也常被称为二分法或者折半查找,每次查找时通过将待查找区间分成两部分并只取一部分继续查找,将查找的复杂度大大减少。对于一个长度为 O(n) 的数组,二分查找的时间复杂度为 O(log n)。 1、给你一个非负整数 x ,计算并返回 x 的 算术平方根 。 由于返回类型是整数,结果只保留

  • 归并排序算法2022-07-26 12:01:36

    归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。     public class MergeSortTest {public static void main(String[] args) {int[] data = new int[] 

  • 【Java面试手册-算法篇】给定一个非空字符串,最多删除一个字符,判断是否能成为回文字符串2022-07-26 09:02:41

    回文字符串是指一个字符串从左到右与从右到左遍历得到的序列是相同的。也就是说不管从左读,还是从右读,都是一样的。 比如 “abcba”、“aaa” 是回文字符串,而 “abca” 不是回文字符串,但是从 "abca" 中删除一个 b 或 c 得到的新字符串 "aca" 或 "aba" 就是回文字符串。 实现思路:

  • LeetCode/完全二叉树的节点个数2022-07-25 23:35:47

    1. 深度优先 class Solution { public: int countNodes(TreeNode* root) { if(!root) return 0; return 1+countNodes(root->left)+countNodes(root->right); } }; 2. 广度优先 class Solution { public: int countNodes(TreeNode* root) {

  • LeetCode/路径总和2022-07-25 21:34:54

    1. 树中是否存在根节点到叶子节点的路径 class Solution { public: bool hasPathSum(TreeNode *root, int sum) { if (root == nullptr) { return false; } if (root->left == nullptr && root->right == nullptr) { return

  • java数据结构分析-红黑树2022-07-25 20:37:31

    红黑树的特性(1)每个节点或者是黑色,或者是红色。(2)根节点是黑色。(3)每个叶子节点(NIL)是黑色。 [注意:这里叶子节点,是指为空(NIL 或NULL)的叶子节点! ](4)如果一个节点是红色的,则它的子节点必须是黑色的。(5)从一个节点到该节点的子孙节点的所有路径上包含相同数目的黑节点。左旋对 x 进

  • 【模板】扩展欧几里得算法2022-07-25 19:34:26

    【模板】扩展欧几里得算法 void exgcd(int a, int b, int &g, int &x, int &y) { if (!b) x = 1, y = 0, g = a; else { exgcd(b, a % b, g, x, y); int t = x; x = y; y = t - a / b * y; } } 如何理解 虽然不知道在推什么但是确实

  • c++二分法查找2022-07-25 14:31:36

    二分法: 二分法应用条件:1)数组为有序数组。2)同时题目还强调数组中无重复元素,因为一旦有重复元素,使用二分查找法返回的元素下标可能不是唯一的。 区间的定义: 区间的定义不同代码就不同。 1)定义target在[left, right]区间 while (left <= right) 要使用 <= ,因为left == right是有意义

  • POJ3580SuperMemo(无旋treap-平衡树的区间操作)2022-07-24 11:31:24

    题目传送门:http://poj.org/problem?id=3580 题意:有一个序列,有6种操作: ADD x y D:将x-y区间内的值全部加D,例如,将区间{1, 2, 3, 4, 5} 2-4 全部+1 得到 {1, 3, 4, 5, 5} REVERSE x y: 将x-y区间内的值全部翻转. 例如,翻转 区间 2-4,{1, 2, 3, 4, 5} 得到 {1, 4, 3, 2, 5} REVOLVE x

  • LeetCode 102 Binary Tree Level Order Traversal 层序BFS2022-07-24 06:00:14

    Given the root of a binary tree, return the level order traversal of its nodes' values. (i.e., from left to right, level by level). Solution 用 \(BFS\) 即可,每次将该层的节点 \(pop\), 然后 \(push\) 其子数的节点 点击查看代码 /** * Definition for a binary tree n

  • 高斯消元解线性方程组2022-07-24 01:33:10

    初等行变换 矩阵的初等行变换是实现高斯消元的方法 初等行变换有三种 某一行所有数乘\(k(k ≠ 0)\) 交换某两行 将某一行加上另一行的若干倍 高斯消元 高斯消元有四种操作 找到绝对值最大的一行(为了代码的稳定性) 将该行移到最上面 将该行第一个数变为1 将最上面一行下

  • 潜水员2022-07-23 23:34:15

    潜水员 潜水员为了潜水要使用特殊的装备。 他有一个带 $2$ 种气体的气缸:一个为氧气,一个为氮气。 让潜水员下潜的深度需要各种数量的氧和氮。 潜水员有一定数量的气缸。 每个气缸都有重量和气体容量。 潜水员为了完成他的工作需要特定数量的氧和氮。 他完成工作所需气缸的总重的最

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有