20章 线性表、栈、队列和优先队列

news2024/12/25 13:00:48

1.编写一个程序,从文本文件读取单词,并按字母的升序显示所有的单词(可以重复)。单词必须以字母开头。文本文件作为命令行参数传递。

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Arrays;

public class Test {
	public static void main(String[] args) {
		if (args.length != 1) {
			System.err.println("Usage: WordSorter <file_path>");
			return;
		}
		String[] words = readFile(args[0]);
		Arrays.sort(words);
		for (String word : words)
			System.out.println(word);
	}

	private static String[] readFile(String path) {
		String[] words = null;
		try {
			words = new String(Files.readAllBytes(Paths.get(path))).split("\\W+");
			for (String word : words)
				word = word.trim();
		} catch (IOException e) {
			System.err.println("Error reading file: " + e.getMessage());
		}
		return words;
	}
}

2.编写一个程序,让用户在图形用户界面中输入数字,然后在文本域显示它们,如图所示。使用链表存储这些数字,但不要存储重复的数值。添加按钮Sort、Shuffle和Reverse,分别对该表进行排序、打乱顺序与逆序排列操作。

2

import javafx.application.Application;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.input.KeyCode;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

import java.util.ArrayList;
import java.util.Collections;
import java.util.StringJoiner;

public class MyJavaFx extends Application {
	private final ArrayList<Integer> list = new ArrayList<>();
	private final TextArea ta = new TextArea();

	@Override
	public void start(Stage stage) {
		// 设置界面
		VBox vBox = new VBox(5);
		HBox hBox = new HBox(15);
		TextField tf = new TextField();
		hBox.getChildren().addAll(new Label("请输入数字: "), tf);
		hBox.setAlignment(Pos.CENTER);
		ta.setEditable(false);
		Button btSort = new Button("Sort");
		Button btShuffle = new Button("Shuffle");
		Button btReverse = new Button("Reverse");
		HBox btBox = new HBox(25);
		btBox.getChildren().addAll(btSort, btShuffle, btReverse);
		btBox.setAlignment(Pos.CENTER);
		vBox.getChildren().addAll(hBox, ta, btBox);

		// 输入数字
		tf.setOnKeyPressed(keyEvent -> {
			if (keyEvent.getCode() == KeyCode.ENTER) {
				String s = tf.getText();
				try {
					int x = Integer.parseInt(s);
					list.add(x);
					ta.setText(ta.getText() + ' ' + s);
					tf.setText("");
				} catch (NumberFormatException e) {
					Alert alert = new Alert(Alert.AlertType.ERROR);
					alert.setHeaderText("输入格式错误");
					alert.setContentText("输入的不是整数!\n请重新输入!");
					alert.show();
				}
			}
		});

		btSort.setOnAction(actionEvent -> {
			Collections.sort(list);
			refreshText();
		});
		btShuffle.setOnAction(actionEvent -> {
			Collections.shuffle(list);
			refreshText();
		});
		btReverse.setOnAction(actionEvent -> {
			Collections.reverse(list);
			refreshText();
		});

		// 设置舞台
		stage.setTitle("Exercise20_02");
		stage.setScene(new Scene(vBox));
		stage.show();
	}

	// 将列表中的值显示到文本区域中
	private void refreshText() {
		StringJoiner joiner = new StringJoiner(" ");
		for (int x : list)
			joiner.add(String.valueOf(x));
		ta.setText(joiner.toString());
	}

	public static void main(String[] args) {
		Application.launch(args);
	}
}

3.改写编程练习题8.37,保存州和首府的匹配对,从而随机显示问题。

import java.util.Random;
import java.util.Scanner;

public class Test {
	public static final String[][] province = {{"河北", "石家庄"}, {"山西", "太原"}, {"辽宁", "沈阳"}, {"吉林", "长春"}, {"黑龙江", "哈尔滨"}, {"江苏", "南京"}, {"浙江", "杭州"}, {"安徽", "合肥"}, {"福建", "福州"}, {"江西", "南昌"}, {"山东", "济南"}, {"河南", "郑州"}, {"湖北", "武汉"}, {"湖南", "长沙"}, {"广东", "广州"}, {"海南", "海口"}, {"四川", "成都"}, {"贵州", "贵阳"}, {"云南", "昆明"}, {"陕西", "西安"}, {"甘肃", "兰州"}, {"青海", "西宁"}, {"台湾", "台北"}, {"内蒙古", "呼和浩特"}, {"广西", "南宁"}, {"西藏", "拉萨"}, {"宁夏", "银川"}, {"新疆", "乌鲁木齐"}};

	public static void main(String[] args) {
		Random random = new Random(System.currentTimeMillis());
		Scanner scanner = new Scanner(System.in);
		for (; ; ) {
			int i = random.nextInt(28);
			System.out.println("哪个城市是" + province[i][0] + "的省会?");
			String s = scanner.next();
			System.out.println(s.equals(province[i][1]) ? "恭喜你,回答正确!" : province[i][0] + "的省会是" + province[i][1] + '。');
		}
	}
}

4.编写一个程序,满足下面的要求:使用Point2D随机创建100个点,并且应用Arrays.sort(list, Comparator)方法进行排序,首先通过 y y y坐标的升序对点进行排序,如果 y y y相同,则按照 x x x坐标的升序排序。显示前5个点的 x x x y y y坐标。

import java.awt.geom.Point2D;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Random;

public class Test {
	public static void main(String[] args) {
		Point2D[] points = new Point2D.Double[100];
		Random random = new Random(System.currentTimeMillis());
		for (int i = 0; i < 100; i++)
			points[i] = new Point2D.Double(random.nextDouble(), random.nextDouble());
		Arrays.sort(points, new Comparator<Point2D>() {
			@Override
			public int compare(Point2D o1, Point2D o2) {
				if (o1.getY() > o2.getY()) return 1;
				if (o1.getY() == o2.getY())
					if (o1.getX() > o2.getX())
						return 1;
					else if (o1.getX() == o2.getX())
						return 0;
				return -1;
			}
		});
		for (int i = 0; i < 5; i++)
			System.out.printf("(%f,%f)\n", points[i].getX(), points[i].getY());
	}
}

6.编写一个测试程序,在一个链表上存储500万个整数,测试分别使用iteratorget(index)方法的遍历时间。

import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;

public class Test {
	private static final List<Integer> list = new LinkedList<>();

	public static void main(String[] args) {
		for (int i = 0; i < 5000000; i++)
			list.add(i);
		long startTime, endTime;

		startTime = System.currentTimeMillis();
		indexTravers();
		endTime = System.currentTimeMillis();
		System.out.println("下标法遍历耗时:" + (endTime - startTime) + "纳秒。");

		startTime = System.currentTimeMillis();
		iteratorTravers();
		endTime = System.currentTimeMillis();
		System.out.println("迭代器法遍历耗时:" + (endTime - startTime) + "纳秒。");
	}

	private static void indexTravers() {
		for (int i = 0; i < list.size(); i++)
			list.get(i);
	}

	private static void iteratorTravers() {
		Iterator<Integer> it = list.iterator();
		while (it.hasNext())
			it.next();
	}
}

10.编写一个程序创建两个优先队列{"George", "Jim", "John", "Blake", "Kevin", "Michael"}{"George", "Katie", "Kevin", "Michelle", "Ryan"},求它们的并集、差集和交集。

import java.util.HashSet;
import java.util.List;
import java.util.PriorityQueue;

public class Test {
	public static void main(String[] args) {
		PriorityQueue<String> queue1 = new PriorityQueue<>();
		queue1.addAll(List.of("George", "Jim", "John", "Blake", "Kevin", "Michael"));
		PriorityQueue<String> queue2 = new PriorityQueue<>();
		queue2.addAll(List.of("George", "Katie", "Kevin", "Michelle", "Ryan"));

		HashSet<String> set1 = new HashSet<>(queue1);
		HashSet<String> set2 = new HashSet<>(queue2);

		// 计算并集
		HashSet<String> union = new HashSet<>(set1);
		union.addAll(set2);

		// 计算差集
		HashSet<String> difference = new HashSet<>(set1);
		difference.removeAll(set2);

		// 计算交集
		HashSet<String> intersection = new HashSet<>(set1);
		intersection.retainAll(set2);

		// 打印结果
		System.out.println("Union: " + union);
		System.out.println("Difference (set1 - set2): " + difference);
		System.out.println("Intersection: " + intersection);
	}
}

11.Java程序包含各种编组符号对,例如:

  • 圆括号:()
  • 方括号:[]
  • 花括号:{}

请注意编组符号不能交叉。例如,(a{b)}是不合法的。编写一个程序,检查一个Java源程序中的编组符号是否都正确匹配了。将源代码文件的名字作为命令行参数传递。

import java.io.FileReader;
import java.io.IOException;
import java.util.Stack;

public class Test {
	private static final byte ROUND_BRACKET = 0;
	private static final byte SQUARE_BRACKET = 1;
	private static final byte CURLY_BRACKET = 2;

	public static void main(String[] args) {
		if (args.length != 1) {
			System.err.println("命令行参数有误!");
			return;
		}
		try (FileReader fileReader = new FileReader(args[0])) {
			int c;
			Stack<Byte> stack = new Stack<>();
			while ((c = fileReader.read()) != -1)
				switch ((char) c) {
					case '(':
						stack.push(ROUND_BRACKET);
						break;
					case '[':
						stack.push(SQUARE_BRACKET);
						break;
					case '{':
						stack.push(CURLY_BRACKET);
						break;
					case ')':
						if (stack.isEmpty() || stack.pop() != ROUND_BRACKET) {
							fileReader.close();
							System.out.println("括号不匹配!");
							return;
						}
						break;
					case ']':
						if (stack.isEmpty() || stack.pop() != SQUARE_BRACKET) {
							fileReader.close();
							System.out.println("括号不匹配!");
							return;
						}
						break;
					case '}':
						if (stack.isEmpty() || stack.pop() != CURLY_BRACKET) {
							fileReader.close();
							System.out.println("括号不匹配!");
							return;
						}
				}
			if (stack.isEmpty())
				System.out.println("括号成功匹配!");
			else
				System.out.println("括号不匹配!");
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

12.定义MyPriorityQueue类,继承自PriorityQueue并实现Cloneable接口和clone()方法,以克隆一个优先队列。

import java.util.PriorityQueue;

public class MyPriorityQueue<E> extends PriorityQueue<E> implements Cloneable {
	public MyPriorityQueue() {
	}

	public MyPriorityQueue(int initialCapacity) {
		super(initialCapacity);
	}

	@Override
	public MyPriorityQueue<E> clone() {
		MyPriorityQueue<E> es = new MyPriorityQueue<>(super.size());
		es.addAll(this);
		return es;
	}
}

17.编写一个程序,检查是否有4个给定数的24点解决方案。该程序让用户输入在1到13之间的4个值,如图所示,。然后用户可以单击Solve按钮显示解决方案,若不存在解决方案,则提示“不存在解决方案”。

17

import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TextField;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.scene.text.Font;
import javafx.stage.Stage;

public class MyJavaFx extends Application {
	private static final char[] operator = {'+', '-', '*', '/'};

	@Override
	public void start(Stage stage) {
		VBox vBox = new VBox();
		HBox hBox = new HBox();
		TextField resTf = new TextField();
		resTf.setEditable(false);
		Button button = new Button("Solve");
		hBox.getChildren().addAll(resTf, button);
		hBox.setAlignment(Pos.CENTER);
		TextField tf1 = new TextField();
		tf1.setFont(new Font(20));
		tf1.setAlignment(Pos.CENTER);
		tf1.setPrefWidth(70);
		TextField tf2 = new TextField();
		tf2.setFont(new Font(20));
		tf2.setAlignment(Pos.CENTER);
		tf2.setPrefWidth(70);
		TextField tf3 = new TextField();
		tf3.setFont(new Font(20));
		tf3.setAlignment(Pos.CENTER);
		tf3.setPrefWidth(70);
		TextField tf4 = new TextField();
		tf4.setFont(new Font(20));
		tf4.setAlignment(Pos.CENTER);
		tf4.setPrefWidth(70);
		HBox numBox = new HBox();
		numBox.getChildren().addAll(tf1, tf2, tf3, tf4);
		vBox.getChildren().addAll(hBox, numBox);

		/*TextFormatter<String> digitInputFormatter = new TextFormatter<String>(new UnaryOperator<TextFormatter.Change>() {
			@Override
			public TextFormatter.Change apply(TextFormatter.Change change) {
				String s = change.getText();
				return s.matches("[1-9]")||s.matches("1[0-3]")?change:null;
			}
		});
		tf1.setTextFormatter(digitInputFormatter);
		tf2.setTextFormatter(digitInputFormatter);
		tf3.setTextFormatter(digitInputFormatter);
		tf4.setTextFormatter(digitInputFormatter);*/
		tf1.textProperty().addListener(new ChangeListener<String>() {
			@Override
			public void changed(ObservableValue<? extends String> observableValue, String s, String t1) {
				if (!t1.matches("[1-9]") && !t1.matches("1[0-3]"))
					tf1.setText(s);
			}
		});
		tf2.textProperty().addListener(new ChangeListener<String>() {
			@Override
			public void changed(ObservableValue<? extends String> observableValue, String s, String t1) {
				if (!t1.matches("[1-9]") && !t1.matches("1[0-3]"))
					tf2.setText(s);
			}
		});
		tf3.textProperty().addListener(new ChangeListener<String>() {
			@Override
			public void changed(ObservableValue<? extends String> observableValue, String s, String t1) {
				if (!t1.matches("[1-9]") && !t1.matches("1[0-3]"))
					tf3.setText(s);
			}
		});
		tf4.textProperty().addListener(new ChangeListener<String>() {
			@Override
			public void changed(ObservableValue<? extends String> observableValue, String s, String t1) {
				if (!t1.matches("[1-9]") && !t1.matches("1[0-3]"))
					tf4.setText(s);
			}
		});

		button.setOnAction(actionEvent -> {
			byte[] a = new byte[4];
			a[0] = Byte.parseByte(tf1.getText());
			a[1] = Byte.parseByte(tf2.getText());
			a[2] = Byte.parseByte(tf3.getText());
			a[3] = Byte.parseByte(tf4.getText());
			resTf.setText(solve(a));
		});

		stage.setTitle("Exercise20_17");
		stage.setScene(new Scene(vBox));
		stage.show();
	}

	// 求解24点
	private static String solve(byte[] num) {
		for (short i = 1; i > 0; ++i) {
			byte i1 = (byte) (i & 3), i2 = (byte) ((i >> 2) & 3);
			if (i1 == i2) continue;
			byte i3 = (byte) ((i >> 4) & 3);
			if (i1 == i3 || i2 == i3) continue;
			byte i4 = (byte) ((i >> 6) & 3);
			if (i1 == i4 || i2 == i4 || i3 == i4) continue;
			float x1;
			byte op1 = (byte) ((i >> 8) & 3);
			switch (op1) {
				case 0:
					x1 = num[i2] + num[i1];
					break;
				case 1:
					x1 = num[i2] - num[i1];
					break;
				case 2:
					x1 = num[i2] * num[i1];
					break;
				default:
					if (num[i1] == 0) continue;
					x1 = (float) num[i2] / num[i1];
			}
			if ((i & 0x4000) == 0) {
				byte op2 = (byte) ((i >> 10) & 3);
				switch (op2) {
					case 0:
						x1 += num[i3];
						break;
					case 1:
						x1 = num[i3] - x1;
						break;
					case 2:
						x1 *= num[i3];
						break;
					default:
						if (Math.abs(x1) < 0.01) continue;
						x1 = num[i3] / x1;
				}
				byte op3 = (byte) (i >> 12);
				switch (op3) {
					case 0:
						x1 += num[i4];
						break;
					case 1:
						x1 = num[i4] - x1;
						break;
					case 2:
						x1 *= num[i4];
						break;
					default:
						if (Math.abs(x1) < 0.01) continue;
						x1 = num[i4] / x1;
				}
				if (Math.abs(x1 - 24) < 0.01) {
					StringBuilder sb = new StringBuilder(String.valueOf(num[i4]));
					sb.append(operator[op3]);
					boolean b = op2 == 3 || (op2 == 2 || op2 == 1) && (op1 == 0 || op1 == 1);
					if (op3 == 3 || (op3 == 2 || op3 == 1) && (op2 == 0 || op2 == 1)) {
						sb.append('(').append(num[i3]).append(operator[op2]);
						if (b)
							sb.append('(').append(num[i2]).append(operator[op1]).append(num[i1]).append(')');
						else
							sb.append(num[i2]).append(operator[op1]).append(num[i1]);
						sb.append(')');
						return sb.toString();
					} else {
						sb.append(num[i3]).append(operator[op2]);
						if (b)
							sb.append('(').append(num[i2]).append(operator[op1]).append(num[i1]).append(')');
						else
							sb.append(num[i2]).append(operator[op1]).append(num[i1]);
						return sb.toString();
					}
				}
			} else {
				if ((i & 0x2000) != 0) continue;
				byte op3 = (byte) ((i >> 10) & 3);
				float x2;
				switch (op3) {
					case 0:
						x2 = num[i4] + num[i3];
						break;
					case 1:
						x2 = num[i4] - num[i3];
						break;
					case 2:
						x2 = num[i4] * num[i3];
						break;
					default:
						if (num[i3] == 0) continue;
						x2 = (float) num[i4] / num[i3];
				}
				byte op2 = (byte) ((i >> 12) & 1);
				if (op2 == 0)
					x1 += x2;
				else
					x1 -= x2;
				if (Math.abs(x1 - 24) < 0.01) {
					StringBuilder sb = new StringBuilder(String.valueOf(num[i4]));
					sb.append(operator[op3]).append(num[i3]);
					if (op2 == 1 && (op1 == 1 || op1 == 0))
						sb.append('-').append(num[i2]).append(operator[1 - op1]).append(num[i1]);
					else
						sb.append(num[i2]).append(operator[op1]).append(num[i1]);
					return sb.toString();
				}
			}
		}
		return "不存在解决方案!";
	}

	public static void main(String[] args) {
		Application.launch(args);
	}
}

18.重写程序清单18-10,不使用递归得到目录的大小。你的程序应该使用队列来存储一个目录下的所有子目录。

public static long getSize(File directory) {
	long size = 0;
	LinkedList<File> queue = new LinkedList<>();
	queue.offer(directory);
	while (!queue.isEmpty()) {
		File file = queue.poll();
		if (file.isFile())
			size += file.length();
		else {
			File[] subFiles = file.listFiles();
			if (subFiles != null)
				for (File f : subFiles)
					queue.offer(f);
		}
	}
	return size;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2120942.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python-数字反转

题目描述 给定一个整数 N&#xff0c;请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式&#xff0c;即除非给定的原数为零&#xff0c;否则反转后得到的新数的最高位数字不应为零&#xff08;参见样例 2&#xff09;。 输入格式 一个整数 N。 输出格式 …

数据结构基础讲解(七)——数组和广义表专项练习

本文数据结构讲解参考书目&#xff1a; 通过网盘分享的文件&#xff1a;数据结构 C语言版.pdf 链接: https://pan.baidu.com/s/159y_QTbXqpMhNCNP_Fls9g?pwdze8e 提取码: ze8e 数据结构基础讲解&#xff08;六&#xff09;——串的专项练习-CSDN博客 个人主页&#xff1a;樱娆…

猫头虎分析:iPhone 16 系列哪款更适合你?买 iPhone 16 选哪款好?

猫头虎分析&#xff1a;iPhone 16 系列哪款更适合你&#xff1f;买 iPhone 16 选哪款好&#xff1f; 大家好&#xff0c;我是猫头虎。每年苹果发布新机型时&#xff0c;总能引发广泛的讨论和期待。今年也不例外&#xff0c;苹果发布了备受瞩目的 iPhone 16 系列&#xff0c;无…

uniapp媒体

uni.previewImage实现图片放大预览 // 图片预览函数function onPreview(index) {// 收集所有图片的urlvar urls pets.value.data.map(item > item.url)// 预览图片uni.previewImage({current: index, // 当前预览的图片索引urls: urls // 所有图片的url数组})}

COCOS:(飞机大战02)简单的帧动画制作

飞机大战知识点总结 先准备2张图片 选中飞机Body&#xff0c;01&#xff1a;添加动画组件&#xff0c;02&#xff1a;新建动画剪辑资源&#xff0c;保存到动画目录。 在动画编辑器中先增加属性&#xff0c;点加号&#xff0c;选择cc.Sprite,选择spriteFrame把飞机图片hero0 拖…

项目售后服务方案(Word原件2024)

售后服务体系 售后服务流程 售后服务承诺 售后服务计划 技术支持响应承诺 售后服务响应时间 1.2 项目培训方案 项目培训体系 项目培训管理 培训目的与措施 项目培训安排 培训告知下达 培训人员贯彻 培训签到表 工作安排任务书&#xff0c;可行性分析报告&#xff0c;立项申请审…

聚观早报 | 拼多多“百亿减免”新政策;石头洗地机A30系列发布

聚观早报每日整理最值得关注的行业重点事件&#xff0c;帮助大家及时了解最新行业动态&#xff0c;每日读报&#xff0c;就读聚观365资讯简报。 整理丨Cutie 9月10日消息 拼多多“百亿减免”新政策 石头洗地机A30系列发布 iQOO 13将采用京东方定制屏幕 iPhone 16 Pro或支…

Lombok失效:报错 找不到符号 Springboot项目

错误原因&#xff0c;Springboot项目为Lombok提供了版本管理的支持&#xff0c;所以引入Lombok依赖的时候&#xff0c;无需手动指定版本&#xff0c;手动指定了可能会导致依赖冲突。 去掉手动指定的版本&#xff0c;问题解决

Why I‘m getting 404 Resource Not Found to my newly Azure OpenAI deployment?

题意&#xff1a;为什么我新部署的Azure OpenAI服务会出现404资源未找到的错误&#xff1f; 问题背景&#xff1a; Ive gone through this quickstart and I created my Azure OpenAI resource created a model deployment which is in state succeedded. I also playaround …

使用Kimi生成Node-RED的代码

目录 引言 Kimi生成 导入Node-RED 引言 前面写过几篇博客介绍了Node-RED的使用。Node-RED使用起来已经很方便了&#xff0c;拖拉一下就可以生成程序流。当然&#xff0c;如果想偷懒&#xff0c;可以借助Kimi。 Kimi生成 Kimi不能生成图形&#xff0c;但是Node-RED支持JS…

Mysql事件操作

查看是否开启事件 SELECT event_scheduler; SHOW VARIABLES LIKE %event_scheduler%; 开启或关闭事件 SET GLOBAL event_scheduler 1; SET GLOBAL event_scheduler on; SET GLOBAL event_scheduler 0; SET GLOBAL event_scheduler off; 创建事件sql CREATE EVENT IF…

用Python实现时间序列模型实战——Day 16: 时间序列预测方法

一、学习内容 1. 一步预测与多步预测的区别与方法 一步预测&#xff1a; 一步预测指的是仅预测下一个时间步的值。模型只预测未来一个时间点&#xff0c;然后终止。这种预测方法通常用于短期预测&#xff0c;且误差较小。 多步预测&#xff1a; 多步预测指的是预测多个未来时…

好书推荐!《Transformer与扩散模型:生成式AI实战指南》,附赠PDF!

《Transformer 和扩散模型的生成式 AI 实用指南》 是一本关于生成式人工智能的技术指南&#xff0c;特别关注了Transformer和扩散模型在AI领域的应用。 这本大模型书籍已经上传CSDN&#xff0c;朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】 这本…

三、数组————相关算法题探讨(持续更新中)

数组中相关算法题探讨 前言一、二分查找1.1 思路分析1.2 数组遍历的做法1.2 二分查找的做法1.2.1 二分查找定义1.2.2 二分查找代码实现&#xff08;方法一&#xff09;1.2.3 二分查找代码实现&#xff08;方法二&#xff09; 二、移除数组中的元素2.1 思路分析2.2 三种解法2.2.…

yolov5 自训练模型转 tensorrt 及测试

文章目录 一、准备yolov5自训练模型二、下载tensorrtx源码三、从pt模型生成wts模型四、修改tensorrtx源码4.1 修改 yololayer.h4.2 修改 yolov5.cpp 五、编译运行tensorrt/yolov5 在yolov5训练完模型后&#xff0c;将其转换为tensorrt格式&#xff0c;可以加速推理时间&#xf…

基于单片机的仔猪喂饲系统设计

文章目录 前言资料获取设计介绍功能介绍设计清单具体实现截图参考文献设计获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师&#xff0c;一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设…

【Authing身份云-注册安全分析报告-无验证方式导致安全隐患】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 1. 暴力破解密码&#xff0c;造成用户信息泄露 2. 短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉 3. 带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造…

音频处理学习,部分有代码

操作步骤整理 pip install audiomentations官方文档 audiomentations documentation (iver56.github.io) 官网&#xff1a;Core IO and DSP — librosa 0.10.2 documentation 语音信号处理&#xff1a;librosa-CSDN博客 安装依赖 pip install librosa 加载音频文件 ibro…

走进低代码报表开发(二):高效报表设计新利器

在前面的文章中&#xff0c;我们已经详细介绍了勤研低代码开发平台的报表数据源可视化设计&#xff0c;接下来&#xff0c;让我们一起来继续了解勤研低代码平台的报表设计&#xff0c;在当今数字化快速发展的时代&#xff0c;高效便捷的开发工具对于企业和开发者来说至关重要。…

股票Alpha模型的案例实现

一&#xff1a;股票Alpha模型的介绍 股票Alpha模型是一种量化投资策略&#xff0c;它旨在通过各种数学和统计方法来预测股票或其他金融资产的未来表现&#xff0c;并以此获取超越市场平均水平的超额收益。Alpha模型的核心思想是识别市场中的Alpha&#xff0c;即与市场波动无关…