首页 > 编程语言 >算法模版

算法模版

时间:2024-09-09 09:50:12浏览次数:1  
标签:TreeNode 模版 queue 算法 visited treeNode childNodes childNode

1、 二分查找

int left = 0, right = array.length - 1;
while (left <= right) {
    int middle = (left + right) / 2;
    if (array[middle] == target) {
        // find the result
        return middle;
    } else if (array[middle] < target) {
        left = middle + 1;
    } else {
        right = middle - 1;
    }
}

2、广度优先搜索

  void bfs(TreeNode node) {
      Queue<TreeNode> queue = new LinkedList<>();
      Set<TreeNode> visited = new HashSet<>();
      queue.add(node);
      while (!queue.isEmpty()) {
          TreeNode treeNode = queue.poll();
          visited.add(treeNode);
          // 处理当前节点
          process(treeNode);
          // 找到子节点
          List<TreeNode> childNodes = generated(treeNode);
          for (TreeNode childNode : childNodes) {
              if (!visited.contains(childNode)) {
                  queue.offer(childNode);
              }
          }
      }
  }

标签:TreeNode,模版,queue,算法,visited,treeNode,childNodes,childNode
From: https://www.cnblogs.com/xxjyy/p/18403950

相关文章

  • STM32常用数据采集滤波算法
    例如,STM32进行滤波处理时,主要目的是处理数据采集过程中可能产生的噪声和尖刺信号。这些噪声可能来自电源干扰、传感器自身的不稳定性或其他外部因素。1.一阶互补滤波方法:取a=0~1,本次滤波结果=(1-a)本次采样值+a上次滤波结果优点:对周期性干扰具有良好的抑制作用适用于波动频率......
  • 算法题笔记-滑动窗口
    referdocleetcode对应题目:3.无重复字符的最长子串438.找到字符串中所有字母异位词解题模板://外层循环扩展右边界,内层循环扩展左边界for(intl=0,r=0;r<n;r++){ //当前考虑的元素 while(l<=r&&check()){//扩展左边界 //触发条件,改变滑动......
  • 【408DS算法题】038进阶-图深度优先遍历DFS
    Index题目分析实现总结题目设计函数实现对图的深度优先遍历。分析实现类似于图的BFS的分析思路,图的DFS和二叉树的DFS思路相同,但需要额外考虑结点是否已经被访问过。此处同样用布尔数组visited来记录每个结点的访问情况,对于邻接矩阵存储方式的图的DFS,依照先序遍......
  • 【算法笔记】多源最短路问题——Floyd算法
    0.前言在图中,如果要求任意两点间的距离,则可以使用Floyd(\(\mathcalO(N^3)\)......
  • 【算法笔记】单源最短路问题——Dijkstra算法(无优化/优先队列/set优化)
    0.前言Dijkstra算法可在\(\mathcalO(m\logm)\)或\(\mathcalO(m\logn)\)的时间内求解无负权单源最短路问题。本文中,我们将详细介绍算法的原理、实现,以及常用的两种优化。另外,Dijkstra算法也不要乱用,比如说多源的最短路,用Dijkstra求解的复杂度只有\(\mathcalO(nm\logm)\),但......
  • 【算法笔记】三种背包问题——背包 DP
    前言背包(Knapsack)问题是经典的动态规划问题,也很有实际价值。01背包洛谷P2871[USACO07DEC]CharmBraceletSAtCoderEducationalDPContestD-Knapsack1有\(n\)个物品和一个总容量为\(W\)的背包。第\(i\)件物品的重量是\(w_i\),价值是\(v_i\)。求解将哪些物品装入背包......
  • 【算法笔记】Kruskal/Prim算法——求解最小生成树问题
    前言生活中经常遇到类似这种的问题:公路修建有一些城市,城市之间要修建高速公路,每两个城市之间都可以修双向的路。其中每两个城市之间修路都需要花费对应的金额。请问如何修路,使得总花费的金额最少,且任意两个城市之间都可以直接或间接通过修建的路来通行?实际上,我们可以把这种......
  • 【算法笔记】树状数组/Binary Indexed Tree/Fenwick Tree
    前言树状数组,即树形存储的数组,又称BinaryIndexedTree或FenwickTree。抛开它树形的存储结构,这种神奇的数据结构的应用看起来与「树」没什么关系:有一个序列\(A=(A_1,A_2,\dots,A_N)\),在不超过\(\mathcalO(\logN)\)的时间复杂度内完成下列操作:\(\to~\)求\([L,R]\)区间内所......
  • Cooley-Tukey FFT算法的非递归实现
    一维情况#include<iostream>#include<complex>#include<cmath>constdoublePI=3.14159265358979323846;//交换位置voidswap(std::complex<double>&a,std::complex<double>&b){std::complex<double>temp=a......
  • 【算法笔记】位运算详解
    0.前言突然想到位运算是个好东西,就来水一波文章了……注意:我把能想到的有关位运算的所有内容都放进来了,所以篇幅较长,请谅解!若有写的不清楚或者不够详细的地方欢迎在评论区补充,谢谢支持!本文中参考代码均使用C++编写。废话不多说,下面步入正题。1.基本运算有一定基础的可以......