基础算法-去重字符串,辗转相除法,非递归前序遍历二叉树题型分析

简介: 基础算法-去重字符串,辗转相除法,非递归前序遍历二叉树题型分析

不同子串

从a开始,截取 a aa aaa aaab

从第二个下标开始a aa aab

从第三个 a ab

从第四个 b使用set的唯一性,然后暴力遍历来去去重,从第一个下标开始截取aaab

a aa aaa aaab

a  aa aab

..

从下标0截取的范围[0,最大下标]

第二个下标截取的范围[1,最大下标]

(知道循环次数使用for ,不知道使用while)

subString(i,j)从i开始,截取j个字串

sub的双重循环中,结束位置一定是要恒大于i,所以j是大于i的,然后比i多,但是此时是等于i然后去+1,(那么假如说是j=i+1会怎么样呢,那么<a.length(),就应该变成<=)

  public static void main(String[] args) {
          Scanner scanner=new Scanner(System.in);
          String a=scanner.nextLine();
          HashSet<Object> ret=new HashSet<>();
       for(int i=0;i<a.length();i++){
            for(int j=i;j<a.length();j++){
                 ret.add(a.substring(i,j+1));
            }
       }
 
          System.out.println(ret.size());
 
     }

辗转相除法-求最大公约数

两个整数的最大公约数,等于其中较小的数和两数相除余数的最大公约数。

gcd(a,b)=acd(b,a%b)      a>b

比如12和4的最大公约数=4%0最大公约数。当b值变成0的时候,a就是要求的最大公约数=4

再比如 10和7的最大公约数:7%3->3%4->3%1->1%0

如果没学递归,我会使用循环,可是我学了递归,确实装波一利器。

    public static   int  x(int big,int small){
         if(big<small){
              int tmp=big;
              big=small;
              small=big;
         }
         if(small==0){
              return big;
         }
         int ret=x(small,big%small);
         return  ret;
    }
     public static void main(String[] args) {
          System.out.println(x(27,9));
     }

动态规划

最长增长子序列

最小距离(路径) -数字三角形

背包问题

凑零钱

核心思想:拆分子问题,记住过程,减少重叠的子运算

再简单回顾一下

二叉树非递归前序遍历

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public List<Integer> preorderTraversal(TreeNode root) {
    List<Integer> ret=new LinkedList<>();
    if(root==null) return ret ;
    Stack<TreeNode> stack=new Stack<>();
    TreeNode cur=root;
    while(!stack.isEmpty()||cur!=null){
        while(cur!=null){
        stack.push(cur);
        ret.add(cur.val);
        cur=cur.left;
        }
        TreeNode top=stack.pop();
        cur=top.right;
    }
    return ret;
 
    }
}



相关文章
|
9天前
|
存储 算法 测试技术
【C++数据结构——树】二叉树的遍历算法(头歌教学实验平台习题) 【合集】
本任务旨在实现二叉树的遍历,包括先序、中序、后序和层次遍历。首先介绍了二叉树的基本概念与结构定义,并通过C++代码示例展示了如何定义二叉树节点及构建二叉树。接着详细讲解了四种遍历方法的递归实现逻辑,以及层次遍历中队列的应用。最后提供了测试用例和预期输出,确保代码正确性。通过这些内容,帮助读者理解并掌握二叉树遍历的核心思想与实现技巧。
31 2
|
15天前
|
存储 算法 安全
基于哈希表的文件共享平台 C++ 算法实现与分析
在数字化时代,文件共享平台不可或缺。本文探讨哈希表在文件共享中的应用,包括原理、优势及C++实现。哈希表通过键值对快速访问文件元数据(如文件名、大小、位置等),查找时间复杂度为O(1),显著提升查找速度和用户体验。代码示例展示了文件上传和搜索功能,实际应用中需解决哈希冲突、动态扩容和线程安全等问题,以优化性能。
|
23天前
|
存储 算法 Python
文件管理系统中基于 Python 语言的二叉树查找算法探秘
在数字化时代,文件管理系统至关重要。本文探讨了二叉树查找算法在文件管理中的应用,并通过Python代码展示了其实现过程。二叉树是一种非线性数据结构,每个节点最多有两个子节点。通过文件名的字典序构建和查找二叉树,能高效地管理和检索文件。相较于顺序查找,二叉树查找每次比较可排除一半子树,极大提升了查找效率,尤其适用于海量文件管理。Python代码示例包括定义节点类、插入和查找函数,展示了如何快速定位目标文件。二叉树查找算法为文件管理系统的优化提供了有效途径。
50 5
|
24天前
|
缓存 算法 搜索推荐
Java中的算法优化与复杂度分析
在Java开发中,理解和优化算法的时间复杂度和空间复杂度是提升程序性能的关键。通过合理选择数据结构、避免重复计算、应用分治法等策略,可以显著提高算法效率。在实际开发中,应该根据具体需求和场景,选择合适的优化方法,从而编写出高效、可靠的代码。
32 6
|
2月前
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
79 1
|
2月前
|
算法
分享一些提高二叉树遍历算法效率的代码示例
这只是简单的示例代码,实际应用中可能还需要根据具体需求进行更多的优化和处理。你可以根据自己的需求对代码进行修改和扩展。
|
2月前
|
存储 缓存 算法
如何提高二叉树遍历算法的效率?
选择合适的遍历算法,如按层次遍历树时使用广度优先搜索(BFS),中序遍历二叉搜索树以获得有序序列。优化数据结构,如使用线索二叉树减少空指针判断,自定义节点类增加辅助信息。利用递归与非递归的特点,避免栈溢出问题。多线程并行遍历提高速度,注意线程安全。缓存中间结果,避免重复计算。预先计算并存储信息,提高遍历效率。综合运用这些方法,提高二叉树遍历算法的效率。
74 5
|
1天前
|
算法 数据安全/隐私保护 计算机视觉
基于Retinex算法的图像去雾matlab仿真
本项目展示了基于Retinex算法的图像去雾技术。完整程序运行效果无水印,使用Matlab2022a开发。核心代码包含详细中文注释和操作步骤视频。Retinex理论由Edwin Land提出,旨在分离图像的光照和反射分量,增强图像对比度、颜色和细节,尤其在雾天条件下表现优异,有效解决图像去雾问题。
|
1天前
|
算法 数据可视化 安全
基于DWA优化算法的机器人路径规划matlab仿真
本项目基于DWA优化算法实现机器人路径规划的MATLAB仿真,适用于动态环境下的自主导航。使用MATLAB2022A版本运行,展示路径规划和预测结果。核心代码通过散点图和轨迹图可视化路径点及预测路径。DWA算法通过定义速度空间、采样候选动作并评估其优劣(目标方向性、障碍物距离、速度一致性),实时调整机器人运动参数,确保安全避障并接近目标。
|
11天前
|
算法 数据安全/隐私保护
室内障碍物射线追踪算法matlab模拟仿真
### 简介 本项目展示了室内障碍物射线追踪算法在无线通信中的应用。通过Matlab 2022a实现,包含完整程序运行效果(无水印),支持增加发射点和室内墙壁设置。核心代码配有详细中文注释及操作视频。该算法基于几何光学原理,模拟信号在复杂室内环境中的传播路径与强度,涵盖场景建模、射线发射、传播及接收点场强计算等步骤,为无线网络规划提供重要依据。

热门文章

最新文章