Java与算法(9)

解密m3u8视频合并:从猫抓插件到本地文件修改全流程 本文详细解析了m3u8视频合并的全流程,特别针对加密视频片段提供了解决方案。从使用猫抓插件捕获m3u8文件地址,到利用N_m3u8DL-CLI工具自动下载、解密并合并ts片段,手把手教你处理AES-128加密等常见问题,最终生成完整的本地MP4文件,适合需要备份或处理流媒体资源的用户。 阅读详情

Java与算法(9)

1.给定二叉树头节点,每个节点的值都不同,找到含有节点最多的搜索二叉子树。
public class FindBST {
	public static class Node {
		int data;
		Node left;
		Node right;
		public Node(int data) {
			// TODO Auto-generated constructor stub
			this.data = data;
			left = null;
			right = null;
		}
	}
	
	public static ArrayList<Node> trees = new ArrayList<>();
	public void buildTree(int[] array) {
		for(int i=0;i<array.length;i++) {
		trees.add(new Node(array[i]));
		}
		
		for(int index = 0;index<array.length/2-1;index++) {
			trees.get(index).left =  trees.get(index*2+1);
			trees.get(index).right = trees.get(index*2+2);
		}
		int lastindex = array.length/2-1;
		trees.get(lastindex).left = trees.get(lastindex*2+1);
		if (array.length%2==1) {
			trees.get(lastindex).right = trees.get(lastindex*2+2);
			
		}
		
	}
	
	public Node bigBST(Node root) {
		int[] record =  new int[3];
		return find(root, record);
	}
	
	public Node find(Node root,int[] r) {
		if (root==null) {
			r[0] = 0;
			r[1] = Integer.MAX_VALUE;
			r[2] = Integer.MAX_VALUE;
			return null;
		}
		
		int data = root.data;
		Node right = root.right;
		Node left = root.left;
		Node lBST = find(left,r);
		int lSIZE = r[0];
		int lMIN = r[1];
		int lMAX = r[2];
		Node rBST = find(right, r);
		int rSIZE = r[0];
		int rMIN = r[1];
		int rMAX = r[2];
		r[1] = Math.min(lMIN, data);
		r[2] = Math.max(rMAX, data);
		if (left==lBST && right==rBST && lMAX<data && data<rMIN) {
			r[0] = rSIZE+lSIZE +1;
			return root;
		}
		r[0] = Math.max(rSIZE, lSIZE);
		return lSIZE>rSIZE?lBST:rBST;
	}
	

}
2.实现二叉树三种遍历,要求:
时间复杂度O(N),空间复杂度O(1)
public class MorrisTree {
	public static class Node {
		int data;
		Node left;
		Node right;
		public Node(int data) {
			// TODO Auto-generated constructor stub
			this.data = data;
			left = null;
			right = null;
		}
	}
	
	public static ArrayList<Node> trees = new ArrayList<>();
	public void buildTree(int[] array) {
		for(int i=0;i<array.length;i++) {
		trees.add(new Node(array[i]));
		}
		
		for(int index = 0;index<array.length/2-1;index++) {
			trees.get(index).left =  trees.get(index*2+1);
			trees.get(index).right = trees.get(index*2+2);
		}
		int lastindex = array.length/2-1;
		trees.get(lastindex).left = trees.get(lastindex*2+1);
		if (array.length%2==1) {
			trees.get(lastindex).right = trees.get(lastindex*2+2);
			
		}
		
	}
	
	
	/**
	 * 先序遍历
	 * @param head
	 */
	public static void morrisIn(Node head) {
		if (head == null) {
			return;
		}
		Node cur1 = head;
		Node cur2 = null;
		while (cur1 != null) {
			cur2 = cur1.left;
			if (cur2 != null) {
				while (cur2.right != null && cur2.right != cur1) {
					cur2 = cur2.right;
				}
				if (cur2.right == null) {
					cur2.right = cur1;
					cur1 = cur1.left;
					continue;
				} else {
					cur2.right = null;
				}
			}
			System.out.print(cur1.data + " ");
			cur1 = cur1.right;
		}
		System.out.println();
	}
	
	
	/**
	 * 中序遍历
	 * @param head
	 */
	public static void morrisPre(Node head) {
		if (head == null) {
			return;
		}
		Node cur1 = head;
		Node cur2 = null;
		while (cur1 != null) {
			cur2 = cur1.left;
			if (cur2 != null) {
				while (cur2.right != null && cur2.right != cur1) {
					cur2 = cur2.right;
				}
				if (cur2.right == null) {
					cur2.right = cur1;
					System.out.print(cur1.data + " ");
					cur1 = cur1.left;
					continue;
				} else {
					cur2.right = null;
				}
			} else {
				System.out.print(cur1.data + " ");
			}
			cur1 = cur1.right;
		}
		System.out.println();
	}
	
	/**
	 * 后序遍历
	 * @param head
	 */
	public static void morrisPos(Node head) {
		if (head == null) {
			return;
		}
		Node cur1 = head;
		Node cur2 = null;
		while (cur1 != null) {
			cur2 = cur1.left;
			if (cur2 != null) {
				while (cur2.right != null && cur2.right != cur1) {
					cur2 = cur2.right;
				}
				if (cur2.right == null) {
					cur2.right = cur1;
					cur1 = cur1.left;
					continue;
				} else {
					cur2.right = null;
					printEdge(cur1.left);
				}
			}
			cur1 = cur1.right;
		}
		printEdge(head);
		System.out.println();
	}

	public static void printEdge(Node head) {
		Node tail = reverseEdge(head);
		Node cur = tail;
		while (cur != null) {
			System.out.print(cur.data + " ");
			cur = cur.right;
		}
		reverseEdge(tail);
	}

	public static Node reverseEdge(Node from) {
		Node pre = null;
		Node next = null;
		while (from != null) {
			next = from.right;
			from.right = pre;
			pre = from;
			from = next;
		}
		return pre;
	}
	
	
	

	public static void main(String[] args) {
		int[] array = {3,6,5,9,10,7,29};
		MorrisTree tree = new MorrisTree();
		tree.buildTree(array);
		tree.morrisIn(trees.get(0));
		System.out.println();
		tree.morrisPre(trees.get(0));
		System.out.println();
		tree.morrisPos(trees.get(0));
	}

}
3.实现二叉树三种遍历(递归和非递归)
public class BinartTree {
	
	public static class Node {
		int data;
		Node left;
		Node right;
		public Node(int data) {
			// TODO Auto-generated constructor stub
			this.data = data;
			left = null;
			right = null;
		}
	}
	public static ArrayList<Node> trees = new ArrayList<>();
	public void buildTree(int[] array) {
		for(int i=0;i<array.length;i++) {
		trees.add(new Node(array[i]));
		}
		
		for(int index = 0;index<array.length/2-1;index++) {
			trees.get(index).left =  trees.get(index*2+1);
			trees.get(index).right = trees.get(index*2+2);
		}
		int lastindex = array.length/2-1;
		trees.get(lastindex).left = trees.get(lastindex*2+1);
		if (array.length%2==1) {
			trees.get(lastindex).right = trees.get(lastindex*2+2);
			
		}
		
		
	}
	
	/**
	 * 先序遍历,递归实现
	 * @param root
	 */
	public void preOrder(Node root) {
		if (root==null) {
			return;
		}
		System.out.print(root.data+" ");
		preOrder(root.left);
		preOrder(root.right);
	}
	
	/**
	 * 先序遍历,非递归实现
	 * @param root
	 */
	public void preOrderNotrecur(Node root) {
		Stack<Node> stack = new Stack<>();
		if (root!=null) {
			stack.push(root);
			while (!stack.isEmpty()) {
				root = stack.pop();
				System.out.print(root.data+" ");
				if (root.right!=null) {
					stack.push(root.right);
				}
				if (root.left!=null) {
					stack.push(root.left);
				}
			}
			
		}
		System.out.println("");
		
		
	}
	
	
	/**
	 * 中序遍历,递归实现
	 * @param root
	 */
	public void inOrder(Node root) {
		if (root == null) {
			return;
		}
		inOrder(root.left);
		System.out.print(root.data+" ");
		inOrder(root.right);
	}
	
	/**
	 * 中序遍历,非递归实现
	 * @param root
	 */
	public void inOrderNotrecur(Node root) {
		Stack<Node> stack = new Stack<>();
		if (root!=null) {
			while (!stack.isEmpty() || root!=null) {
				if (root!=null) {
					stack.push(root);
					root=root.left;
				} else {
					root = stack.pop();
					System.out.print(root.data+" ");
					root = root.right;
				}
				
			}
			
		}
		System.out.println();
		
	}
	
	
	/**
	 * 后序遍历,递归实现
	 * @param root
	 */
	public void posOrder(Node root) {
		if (root == null) {
			return ;
		}
		
		posOrder(root.left);
		posOrder(root.right);
		System.out.print(root.data+" ");
	}
	
	public void posOrderNotrecur(Node root) {
		Stack<Node> stack = new Stack<>();
		if (root!=null) {
			stack.push(root);
			Node node = null;
			while (!stack.isEmpty()) {
				node=stack.peek();
				if (node.left!=null && root!=node.left && root!=node.right) {
						stack.push(node.left);
				} else if (node.right!=null && root!=node.right) {
					stack.push(node.right);
				} else {
					System.out.print(stack.pop().data+" ");
					root = node;
				}
				
				
			}
			
			
		}
		
		System.out.println();
		
	}
	
	
	public static void main(String[] args) {
			int[] array = {3,6,5,9,10,7,29};
			BinartTree tree = new BinartTree();
			tree.buildTree(array);
			System.out.println("先序遍历递归实现");
			tree.preOrder(trees.get(0));
			System.out.println("");
			System.out.println("先序遍历非递归实现");
			tree.preOrderNotrecur(trees.get(0));
			System.out.println();
			System.out.println("中序遍历递归实现");
			tree.inOrder(trees.get(0));
			System.out.println();
			System.out.println("中序遍历递归实现");
			tree.inOrderNotrecur(trees.get(0));
			System.out.println();
			System.out.println("后序遍历递归实现");
			tree.posOrder(trees.get(0));
			System.out.println("");
			System.out.println("后序遍历递归实现");
			tree.posOrderNotrecur(trees.get(0));
	}

}
WINCC7.3破解文件 WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载! 立即下载

相关推荐

MATLAB图像去噪实战:如何用巴特沃斯滤波器完美去除横条纹(附完整代码)

本文详细介绍了如何使用MATLAB中的巴特沃斯滤波器有效去除图像中的横条纹噪声。通过频域分析和滤波处理,结合完整的代码示例,帮助读者掌握从噪声分析到参数优化的全流程技术,实现高质量的图像去噪效果。

weixin_30566063的博客 562

蓝桥杯 ADV-140 开灯游戏

ADV-140.开灯游戏 【问题描述】 有9盏灯与9个开关,编号都是1~9。 每个开关能控制若干盏灯,按下一次会改变其控制的灯的状态(亮的变成不亮,不亮变成亮的)。 具体如下: 第一个开关控制第二,第四盏灯;第二个开关控制第一,第三,第五盏灯;第三个开关控制第二,第六盏灯;第四个开关控制第一,第五,第七盏灯;第五个开关控制第二,第四,第六,第八盏灯;第六个开关控制第三,第五,第九盏灯;第七个开关控制第四,第八盏灯;第八个开关控制第五,第七,第九盏灯;第九个开关控制第六,第八盏灯。 开始时所有灯都是熄灭的,开

qq_45489541的博客 419

PICO4 VR开发调试神器:用Live Preview Plugin实现电脑串流,告别反复打包烧录的繁琐流程

本文详细介绍了PICO4 VR开发中如何使用Live Preview Plugin实现电脑串流,显著提升开发效率。通过实时预览和调试功能,开发者可以避免反复打包烧录的繁琐流程,特别适用于Unity环境下的VR应用开发。文章涵盖环境配置、连接设置、实时调试技巧及性能优化方案,是PICO4开发者的必备指南。

weixin_34110970的博客 418

ACM之开灯游戏

仅供自己学习所用

laohu24的博客 801

挑战第七天:Llamaindex RAG 实践

安装python 依赖包,并安装 Llamaindex和相关包以及Sentence Transformer 模型。进入开发机后,创建新的conda环境,命名为。镜像,然后在资源配置中,使用。的选项,然后立即创建开发机器。后,点击 选择镜像 使用。然后安装相关基础依赖。

weixin_53579823的博客 728

车载测试面试题总结

首先确认是什么问题,如果是测试软件的问题就先确定自己的测试方法有没有问题,如果没有问题,那就是测试软件的问题,这时候就需要提bug 进行跟踪,(比如BCM测试的时候,先明确测试的输入,对输入)进行需求分析,然后设计测试用例,进行用例评审,评审完执行测试用例形成最终的版本,台架分为:hil(黑尔)台架,单个控制器的台架、整车台架、车身台架、动力系统台架等,主要验证其功能,或者实车无法满足的测试环境。这个人不可能一直,点击几千次或者多少次几个小时连续点击,人不可能一直在点。因为要模拟一下这个稳定性,

woaxiaoqing的博客 7812

蓝桥杯 算法提高 开灯游戏

题目描述 有9盏灯与9个开关,编号都是1~9。  每个开关能控制若干盏灯,按下一次会改变其控制的灯的状态(亮的变成不亮,不亮变成亮的)。  具体如下:  第一个开关控制第二,第四盏灯;  第二个开关控制第一,第三,第五盏灯;  第三个开关控制第二,第六盏灯;  第四个开关控制第一,第五,第七盏灯;  第五个开关控制第二,第四,第六,第八盏灯;  第六个开关控制第三,第五,第九盏灯;  第七个开关...

一叶之修的博客 1854

姿态传感器/陀螺仪之BMI270应用原理图设计

BMI270是一款由博世(Bosch)推出的高性能、超低功耗惯性测量单元(IMU),专为可穿戴设备、智能设备及物联网应用设计。

corlin6688的博客 2861

[蓝桥杯][算法提高]开灯游戏

时间限制: 1Sec 内存限制: 128MB 题目描述 有9盏灯与9个开关,编号都是1~9。 每个开关能控制若干盏灯,按下一次会改变其控制的灯的状态(亮的变成不亮,不亮变成亮的)。 具体如下: 第一个开关控制第二,第四盏灯; 第二个开关控制第一,第三,第五盏灯; 第三个开关控制第二,第六盏灯; 第四个开关控制第一,第五,第七盏灯; 第五个开关控制第二,第四,第六,第八盏灯; 第六个开关控制第三,第...

Anterior_condyle的博客 572

由JavaScript版迷宫游戏引出Java版迷宫地图生成器

Java案例:迷宫地图生成器 一、引入问题 本期18软件1班网页脚本实训项目是完成一个JavaScript版迷宫游戏。 迷宫地图是如何生成的呢?很简单,将一个正方形区域等分为若干行与若干列,比如25行25列,这样就有625个单元格,用一个二维数组map[25][25]就可以保存625个单元格信息,map[i][j] = 1表示该单元格要绘制砖,而map[i][j] = 0表示该单元格不绘制砖。 ...

howard2005的专栏 1472

23 RAG 为什么答不准:召回、分块、排序的常见坑

RAG 答不准时,不要先怪模型。本文把常见失败拆成召回不到、召回不准、分块不完整、排序靠后、上下文污染和生成不忠实六类,并给出从 Top-K 检查到评估集的排查流程。

老于的笔记的专栏 245

算法提高 开灯游戏

/*     问题描述 有9盏灯与9个开关,编号都是1~9。 每个开关能控制若干盏灯,按下一次会改变其控制的灯的状态(亮的变成不亮,不亮变成亮的)。 具体如下: 第一个开关控制第二,第四盏灯; 第二个开关控制第一,第三,第五盏灯; 第三个开关控制第二,第六盏灯; 第四个开关控制第一,第五,第七盏灯; 第五个开关控制第二,第四,第六,第八盏灯; 第六个开关控制第三,第五,第九盏灯; 第七个开关控制第...

qq_41353167的博客 1869

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

java ansi x9.9 mac_ANSI X9.19 MAC算法

/// /// 获取MAC校验字节数据/// /// 报文字节/// MAC校验字节数据internal static byte[] GetMacData(byte[] bankData){var lstMacKey = new List(_macKey);var leftKey = lstMacKey.GetRange(, ).ToArray();var rightKey = lstMacKey...

weixin_39552204的博客 631

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Java9 数据结构与算法(一)

Java 几十年来一直是企业系统中最受欢迎的编程语言之一。Java 受欢迎的原因之一是其平台独立性,这使得人们可以在任何系统上编写和编译代码,并在任何其他系统上运行,无论硬件和操作系统如何。Java 受欢迎的另一个原因是该语言由一个行业参与者社区标准化。后者使得 Java 能够跟上最新的编程思想,而不会因为过多的无用特性而负担过重。由于 Java 的流行,有许多开发者积极参与 Java 开发。当涉及到学习算法时,最好使用自己最熟悉的语言。这意味着编写一本用 Java 编写的算法书是非常有意义的。这本书涵盖了

龙哥盟 761

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

基于JPBC库的SM9标识密码算法Java实现

基于JPBC库的SM9标识密码算法Java实现 【下载地址】基于JPBC库的SM9标识密码算法Java实现 本仓库提供了基于JPBC(Java Pairing-Based Cryptography)框架的SM9算法完整Java实现。SM9算法作为一种基于标识的密码学方案,由国家标准技术研究所(SGSIT)发布,并在《GB...

gitblog_09815的博客 815

【亲测免费】 探索SM9标识密码算法:基于JPBC的Java实现

探索SM9标识密码算法:基于JPBC的Java实现 【下载地址】基于JPBC库的SM9标识密码算法Java实现 本仓库提供了基于JPBC(Java Pairing-Based Cryptography)框架的SM9算法完整Java实现。SM9算法作为一种基于标识的密码学方案,由国家标准技术研究所(SGSIT)发布,并在《...

gitblog_09748的博客 1379

Java基础算法题(16):输出9*9口诀。

查看所有50道基础算法题请看: Java的50道基础算法题 package Demo16Multiplication_Table; public class Multiplication_Table { /** * 输出9*9乘法表。 */ /* 分析:没啥好分析的,两个循环嵌套遍历1~9格式化打印就好了,开整…… */ public ...

凉拌糖醋鱼 380

Java9 数据结构与算法(二)

在本章中,我们学习了如何在有序数组中进行高效搜索。这种搜索被称为二分搜索。你还学习了从无序数组中获得有序数组的一些方法。这个过程被称为排序。我们看到了三种基本的排序算法。虽然它们并不特别高效,但它们的概念很容易理解。你还学习了如何将递归算法转换为使用循环的非递归算法。在下一章中,我们将看到高效的排序算法。在本章中,我们探讨了两种高效的排序算法。在两种情况下,基本原理都是将数组分割,并分别对部分进行排序。如果我们确保对部分进行排序会导致通过重新调整元素使整个数组排序,那么这就是快速排序。

龙哥盟 921

基于JPBC的SM9算法的java实现与测试

基于JPBC的SM9算法的java实现与测试

yaoyuanyylyy的专栏 2万+

java算法:输出 9*9 口诀

题目:输出 9*9 口诀。 1.程序分析:分行与列考虑,共 9 行 9 列,i 控制行,j 控制列。 public class jiujiu { public static void main(String[] args) { int i=0; int j=0; for(i=1;i<=9;i++) { for(j=1;j<=9;j++)System.out.print(i+"*"+j+"="+i*j+"\t"); System.out.println(); } } } 不出现重复的

笙箫的博客 1918

Java垃圾收集算法[直到Java 9]

垃圾收集(GC)一直是Java流行的重要特征之一。垃圾收集是Java中用于释放未使用内存的机制。本质上,它正在追踪仍然使用的所有对象,并将其余对象标记为垃圾。Java的垃圾收集被认为是一种自动内存管理模式,因为程序员不必将对象指定为可以解除分配。垃圾收集在低优先级线程上运行。 在本教程中,我们将介绍与内存分配/解除分配相关的各种概念,在场景后运行的算法以及自定义此行为的选项。 目录 对象生...

javaZhong的博客 600

java经典算法_015输出9*9口诀表

输出9*9口诀 package wzs.arithmetics; /** * 输出9*9口诀 * @author wWX154783 * */ public class Test_wzs15 { public static void main(String[] args) { for (int i = 1; i <= 9; i++)

那些疯狂到以为自己能够改变世界的人,才能真正改变世界! 2519

java版 银联ANSI-X9.9-MAC算法

java版 银联ANSI-X9.9-MAC算法 关于我碰到的加密不一致的坑: MacUtil的string2Binary方法里用到了split(""), 以字符串"11"为例子 jdk7之前的split("")方法返回数组为[,1,1],长度为3 jdk8返回的为[1,1],长度为2 需要根据返回的字符数组长度修改循环的推出条件 /* * @(#)MacUtil.java 1.0 2013-3-28 * * Copyright (c) 2009 Sunyard System Engine

A8511的博客 883

java算法day9

添加:addFirst(E e), addLast(E e), add(E e) 删除:removeFirst(), removeLast(), remove() 查看:getFirst(), getLast()栈(Stack)风格操作: 添加:push(E e) (等同于 addFirst(E e)) 删除:pop() (等同于 removeFirst()) 查看:peek() (等同于 peekFirst())1.性能问题,Stack继承Vector,而Vector是线程安全的,所以有额外的开销。

TOMOT77的博客 1184

hsa 算法_HSA将本地JVM并行加速引入Java 9

在这个多核时代,应用程序对软件和硬件的需求持续增长。 因此,机械同情的想法,因为信奉由马丁·汤普森,变得更加重要-是Java开发人员必须 小号 获得语言和底层平台协调合作。 最近几个月,很多公司都在争辩说Java可能不是处理多核机器或虚拟化系统的最完善的语言。 因此,新的举措似乎可以从Java的硬件中获得额外的性能优势。 迄今为止,最有希望的追求似乎来自HSA Foundation(...

309

java写算法的类库_MOEA Framework 1.9发布 开发MOEAs算法的Java类库

MOEA Framework 是一个用来开发 multiobjective evolutionary 算法(MOEAs) 的 Java 类库,提供的算法还包括: NSGA-II, ε-MOEA, GDE3, and MOEA/D。MOEA Framework 1.9 发布,该版本修复了 31 个新的数值测试问题,改进了命令行工具包。关键特性:◆ Fast, reliable implementa...

weixin_29938187的博客 418
上一篇: Java与算法(8)
下一篇: Netty实现消息推送以及内部心跳机制
Coder_py
博客等级 码龄10年 106粉丝 258原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值