Java每日一练(20230417)

news/2024/4/24 4:14:41/

 

目录

1. N 皇后  🌟🌟🌟

2. 搜索二维矩阵  🌟🌟

3. 发奖金问题 🌟

🌟 每日一练刷题专栏 🌟

Golang每日一练 专栏

Python每日一练 专栏

C/C++每日一练 专栏

Java每日一练 专栏


1. N 皇后

n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。

给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案。

每一种解法包含一个不同的 n 皇后问题 的棋子放置方案,该方案中 'Q' 和 '.' 分别代表了皇后和空位。

示例 1:

输入:n = 4
输出:[[".Q..","...Q","Q...","..Q."],["..Q.","Q...","...Q",".Q.."]]
解释:如上图所示,4 皇后问题存在两个不同的解法。

示例 2:

输入:n = 1
输出:[["Q"]]

提示:

  • 1 <= n <= 9
  • 皇后彼此不能相互攻击,也就是说:任何两个皇后都不能处于同一条横行、纵行或斜线上。

代码:

import java.util.*;
public class solveNQueens {public static class Solution {public List<List<String>> solveNQueens(int n) {List<List<String>> res = new ArrayList<List<String>>();int[] queenList = new int[n];placeQueen(queenList, 0, n, res);return res;}private void placeQueen(int[] queenList, int row, int n, List<List<String>> res) {if (row == n) {ArrayList<String> list = new ArrayList<String>();for (int i = 0; i < n; i++) {String str = "";for (int col = 0; col < n; col++) {if (queenList[i] == col) {str += "Q";} else {str += ".";}}list.add(str);}res.add(list);}for (int col = 0; col < n; col++) {if (isValid(queenList, row, col)) {queenList[row] = col;placeQueen(queenList, row + 1, n, res);}}}private boolean isValid(int[] queenList, int row, int col) {for (int i = 0; i < row; i++) {int pos = queenList[i];if (pos == col) {return false;}if (pos + row - i == col) {return false;}if (pos - row + i == col) {return false;}}return true;}}public static void main(String[] args) {Solution s = new Solution();System.out.println(s.solveNQueens(4));}
}

输出:

[[.Q.., ...Q, Q..., ..Q.], [..Q., Q..., ...Q, .Q..]]

2. 搜索二维矩阵

编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性:

  • 每行中的整数从左到右按升序排列。
  • 每行的第一个整数大于前一行的最后一个整数。

示例 1:

输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 3
输出:true

示例 2:

输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 13
输出:false

提示:

  • m == matrix.length
  • n == matrix[i].length
  • 1 <= m, n <= 100
  • -10^4 <= matrix[i][j], target <= 10^4

代码:

import java.util.*;
public class searchMatrix {public static class Solution {public boolean searchMatrix(int[][] matrix, int target) {if (matrix.length == 0 || matrix[0].length == 0)return false;int begin, mid, end;begin = mid = 0;int len1 = matrix.length, len2 = matrix[0].length;end = len1 * len2 - 1;while (begin < end) {mid = (begin + end) / 2;if (matrix[mid / len2][mid % len2] < target)begin = mid + 1;elseend = mid;}return matrix[begin / len2][begin % len2] == target;}}public static void main(String[] args) {Solution s = new Solution();int[][] matrix = {{1,3,5,7},{10,11,16,20},{23,30,34,60}};System.out.println(s.searchMatrix(matrix, 3));int[][] matrix2 = {{1,3,5,7},{10,11,16,20},{23,30,34,60}};System.out.println(s.searchMatrix(matrix2, 13));}
}

输出:

true
false


3. 发奖金问题

过年了,村里要庆祝。村长说,村里有一笔钱作为奖金,让每个人写一个纸条上来,谁写的数目与奖金最接近,就算猜中,这笔奖金就归谁,如果多人猜中,则平分。

编写程序,算算都有哪些人得到奖金?多少?

代码:

import java.util.Collections;
import java.util.Comparator;
import java.util.Arrays;
import java.io.PrintStream;
import java.nio.charset.StandardCharsets;
class Solution1 {public static void main(String[] args) {int award = 100;String[] people = { "a", "b", "c", "d", "e", "f", "g", "h" };Integer[] guess = { 75, 70, 80, 120, 100, 110, 100, 45 };Integer[] ordered = new Integer[people.length];for (int i = 0; i < ordered.length; i++)ordered[i] = i;Arrays.sort(ordered, new Comparator<Integer>() {@Overridepublic int compare(Integer a, Integer b) {int x = guess[a] - award > 0 ? guess[a] - award : award - guess[a];int y = guess[b] - award > 0 ? guess[b] - award : award - guess[b];return x - y;}});int maxp = 0;int i = 0;System.setOut(new PrintStream(System.out, true, StandardCharsets.UTF_8));while (guess[ordered[i++]] == award)maxp++;if (maxp <= 1)System.out.println(people[ordered[0]] + "一人得奖" + award + "元。");else {for (i = 0; i < maxp; i++)System.out.print(people[ordered[i]] + " ");System.out.println("共同得奖" + award / (float) (maxp) + "元。");}}
}

输出:

e g 共同得奖50.0元。


🌟 每日一练刷题专栏 🌟

持续,努力奋斗做强刷题搬运工!

👍 点赞,你的认可是我坚持的动力! 

🌟 收藏,你的青睐是我努力的方向! 

评论,你的意见是我进步的财富!  

 主页:https://hannyang.blog.csdn.net/ 

Golang每日一练 专栏

Python每日一练 专栏

C/C++每日一练 专栏

Java每日一练 专栏


http://www.ppmy.cn/news/47684.html

相关文章

Java反射面试总结(二)

为什么引入反射概念&#xff1f;反射机制的应用有哪些&#xff1f; 我们来看一下 Oracle 官方文档中对反射的描述&#xff1a; 从 Oracle 官方文档中可以看出&#xff0c;反射主要应用在以下几方面&#xff1a; 反射让开发人员可以通过外部类的全路径名创建对象&#xff0c;…

The path of studying 1

目录 小知识点总结 其他问题 1.一个关于c盘固执的问题 2.一个关于pytorch安装的固执问题 3.关于服务器结束程序进程 4.关于python中的glob 5.关于分布式训练的问题 遇到的奇葩问题 小知识点总结 1.python find() # 返回的是字符串中需要寻找的字符的位置 python fi…

擎创动态 | 二等奖!擎创携手国家电网喜获“浪潮信息杯”绝佳成绩

近日&#xff0c;2022电力行业信息化年会于湖南省长沙市圆满落下帷幕。据悉&#xff0c;今年是电力行业信息化年会举办的第二十周年&#xff0c;年会的主题为“低碳数字新动力 电力转型新发展”&#xff0c;紧密围绕“十四五”数据经济发展&#xff0c;“双碳”战略、新型电力系…

RHCE-DNS服务器

主机名称解析服务器配置 要求&#xff1a; 1、建立DNS服务器&#xff0c;负责解析的域为openedu.com&#xff1b; 建立DNS首先需要在服务器端配置主配置文件&#xff1a; &#xff08;1&#xff09;临时关闭防火墙和selinux&#xff1a;systemctl stop firewalld&#xff1b;…

USRP B210同步采集

MIMO Multiple Input Multiple Output的缩写&#xff0c;通过多只天线同时进行收发&#xff0c;增加无线网络基地台的涵盖范围。 MIMO&#xff08;多输入多输出&#xff09;是一项关键的无线技术&#xff0c;它可以将一个传输信号分割成多个流&#xff0c;而这些流则分散地传…

生产模块-报工自动产生返工订单(触发点-Trigger Point)

目录 应用场景 配置点-完整模式&#xff08;通过自定义状态触发&#xff09; 其他说明 应用场景 一般来说适合自动化程度高&#xff0c;生产集成了MES和质检的功能&#xff0c;工序报工时发生返工业务时&#xff0c;根据返工的指令&#xff0c;系统直接下达返工订单。例如&…

通俗讲解什么是Socket通讯

Socket通讯原理 1、什么是Socket&#xff1f; Socket&#xff0c;即套接字。就是两台主机之间逻辑连接的端点。&#xff08;通俗来说&#xff1a;网络上的两个程序通过一个双向的通信连接实现数据的交换&#xff0c;这个连接的一端称为一个socket&#xff09;。 Socket是一套…

jar包依赖冲突该怎么解决(IT枫斗者)

jar包依赖冲突该怎么解决&#xff08;IT枫斗者&#xff09; maven jar包依赖规则 间接依赖路径最短优先一个项目依赖了a和b两个jar包&#xff0c;其中a-b-c1.0&#xff0c;d-e-c1.0,由于c1.0路径最短&#xff0c;所以项目最后使用的jar包是c1.0pom文件中申明顺序优先有人就问…

linux内核开发第5讲:字符设备驱动的Makefile和驱动的插入和卸载

文章目录 1.Makefile文件2.解析Makefile2.1 Makefile 条件判断2.2 obj-m obj-y2.3 Linux uname 命令2.4 make -C ( K D I R ) M (KDIR) M (KDIR)M(PWD) 3.操作实践3.1 make参数3.2 执行make3.3 清理内核日志3.4 加载驱动3.5 查看驱动3.6 卸载驱动 1.Makefile文件 ifneq ($(K…

TensorFlow 卷积神经网络实用指南:1~5

原文&#xff1a;Hands-On Convolutional Neural Networks with TensorFlow 协议&#xff1a;CC BY-NC-SA 4.0 译者&#xff1a;飞龙 本文来自【ApacheCN 深度学习 译文集】&#xff0c;采用译后编辑&#xff08;MTPE&#xff09;流程来尽可能提升效率。 不要担心自己的形象&am…

迅为RK3588核心板平台新增工业级方案

迅为基于瑞芯微RK3588平台&#xff0c;提供商业级、工业级和国产化核心板&#xff0c;工业级板卡温度可达-40度到85度&#xff0c;国产化板卡从内存&#xff0c;存储等每一个元器件全部采用国产物料。不同板卡&#xff0c;满足各个行业需求。 iTOP-3588核心板参数 CPU &#x…

App 抓包提示网络异常怎么破?

背景 当你测试App的时候&#xff0c;想要通过Fiddler/Charles等工具抓包看下https请求的数据情况&#xff0c;发现大部分的App都提示网络异常/无数据等等信息。以“贝壳找房”为例&#xff1a; Fiddler中看到的请求是这样的&#xff1a; 你可能开始找证书的问题&#xff1a;是…

Python项目之中国数据可视化

文章目录 关键词一、做什么二、怎么做1、获取数据&&处理数据2、数据库设计&&存储数据3、开发后端接口4、前端页面编写 三、效果展示四、总结 关键词 PythonDjangoPython网络爬虫echarts可视化阅读者&#xff08;Python基础、Django基础、H5基础&#xff09; …

vue3插槽的使用

插槽就是子组件中的提供给父组件使用的一个占位符&#xff0c;用 表示&#xff0c;父组件可以在这个占位符中填充任何模板代码&#xff0c;如 HTML、组件等&#xff0c;填充的内容会替换子组件的标签。 1.插槽基本使用 子组件SlotComponent.vue <template><div cla…

【计算机专业应届生先找培训还是先找个工作过渡一下?】

计算机专业应届生先找培训还是先找个工作过渡一下&#xff1f; 计算机应届生是先培训还是先工作&#xff0c;这个问题应该困扰了很多专业技能一般的同学&#xff0c;尤其是学历方面还没有优势的普通本专科院校。都说技术与学历优秀的人进大厂&#xff0c;技术一般学历优秀的人能…

树莓派 QT项目开机自启动

我自己用qt设置了一个界面&#xff0c;如何让他开机自启动呢&#xff1f; 目录 1.生成qt项目的可执行文件 2. 编写一个自启动脚本 3.重启树莓派 1.生成qt项目的可执行文件 QT项目的可执行文件就是.exe文件。首先在qt中打开&#xff0c;点击红色方框图标&#xff0c;选择Re…

IO进程间的通信详解(嵌入式学习)

进程间通信 这次更新内容比较干巴&#xff0c;满满嚼&#xff0c;把例子敲一遍好好理解。如果您着急&#xff0c;请直接打开目录跳转到对您有价值的部分管道无名管道(PIPE)特点使用方法举个栗子 有名管道(FIFO)特点使用方法举个栗子 信号概念响应方式信号函数举个栗子&#xff…

冯诺依曼体系结构+操作系统

目录 冯诺依曼体系结构 基本概念 基本原理 操作系统 基本概念 设计OS的目的 管理的本质 管理的方法 系统调用和库函数 冯诺依曼体系结构 基本概念 冯诺依曼结构也称普林斯顿结构&#xff0c;是一种将程序指令存储器和数据存储器合并在一起的存储器结构。 ... 数学…

24个强大的HTML属性,建议每位前端工程师都应该掌握!

HTML属性非常多&#xff0c;除了一些基础属性外&#xff0c;还有许多有用的特别强大的属性 本文将介绍24个强大的HTML属性&#xff0c;可以使您的网站更具有动态性和交互性&#xff0c;让用户感到更加舒适和愉悦。 让我们一起来探索这24个强大的HTML属性吧&#xff01; 1、Acc…

js+css实现简单的弹框动画

效果图 只是一个简单的演示demo&#xff0c;但是可以后面可以优化样式啥的 刚开始元素的display为none&#xff0c;然后&#xff0c;为了给元素展示时添加一个动画&#xff0c;首先要添加样式类名show&#xff0c;让它覆盖display:none&#xff0c;变得可见。然后&#xff0c;添…