Java每日一练(20230417)

news2024/11/25 1:08:49

 

目录

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;
                else
                    end = 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>() {
            @Override
            public 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.coloradmin.cn/o/424449.html

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

相关文章

神经网络之反向传播算法(自适应矩估计算法Adam变形形式之Adamax、Nadam)

文章目录自适应矩估计算法&#xff08;Adam&#xff09;的两种变形形式1、Adamax算法原理2、Nadam算法原理3、算法实现3.1 Adamax训练过程3.2 Adamax测试过程及结果3.3 Nadam训练过程3.4 Nadam测试过程及结果4、参考源码及数据集自适应矩估计算法&#xff08;Adam&#xff09;的…

打造安全无忧软件应用的十大最佳实践

安全无忧的软件开发最佳实践实在是很有必要&#xff0c;因为安全风险无处不在。在网络攻击盛行的时代&#xff0c;它们可能影响到每个人&#xff0c;包括个人、公司和政府。因此&#xff0c;确保软件开发的安全性至关重要。 本篇文章将解释了什么是安全的软件&#xff0c;如何…

你了解C语言中的柔性数组吗?

本篇博客主要讲解C99中的新语法&#xff1a;柔性数组。 1.什么是柔性数组&#xff1f; 柔性数组就是大小可以变化的数组。 注意跟C99中的变长数组区分开来&#xff0c;变长数组指的是可以使用变量来指定大小&#xff0c;并且不能初始化的数组&#xff0c;比如&#xff1a; i…

实例方法、类方法、静态方法、实例属性、类属性

背景&#xff1a;今天在复习类相关知识的时候&#xff0c;突然想到这几种类型的方法的区别和用法&#xff0c;感觉有点模棱两可&#xff0c;于是总结一下&#xff0c;加深记忆。 定义&#xff1a;想要区别和理解几种方法&#xff0c;首先要定义一个类&#xff0c;要在类中加深…

mysql如何修改时区

mysql 里CST时区的坑 一、 问题简述 mysql里CST时区是个非常坑的概念&#xff0c;因为在mysql里CST既表示中国也表示美国的时区。但是在JDK代码里&#xff0c;CST这个字符串被理解为CenTral Standard Time&#xff08;USA&#xff09;&#xff08;GMT-6&#xff09;&#xff…

java框架都有哪些

Java框架是对Java2中的一些基本概念进行抽象&#xff0c;封装成能被开发者使用的类库&#xff0c;使之能快速开发应用程序。它让开发者能够专注于业务逻辑而不是实现细节。可以说&#xff0c; Java框架是 Java开发中的重要组成部分&#xff0c;它极大地方便了开发者。下面为大家…

腾讯云GPU服务器NVIDIA P40 GPU、P4、T4和GPU自由卡详解

腾讯云GPU云服务器&#xff0c;GPU云服务器实例可选GN8机型、GN6S机型、GN7机型等规格&#xff0c;搭载 NVIDIA P40 GPU&#xff0c;最长可3年&#xff0c;云服务器吧来详细说下腾讯云GPU云服务器&#xff1a; 目录 腾讯云GPU云服务器 腾讯云GPU自由卡 腾讯云GPU云服务器 腾…

选品趋势分析 | 2023开斋节将至,穆斯林时尚在TIKTOK上增长势头正劲!

2023年Q1 穆斯林时尚的销售额环比2022年Q4 暴涨153%&#xff0c;领跑TikTok电商大盘&#xff0c;成为2023年Q1的超级黑马品类。加之开斋节临近&#xff0c;人民陆续开始为庆祝开斋节作采购准备&#xff0c;购物需求相应激增&#xff0c;其中&#xff0c;穆斯林群体会在开斋节的…

GELU激活函数

GELU是一种常见的激活函数&#xff0c;全称为“Gaussian Error Linear Unit”, 作为2020年提出的优秀激活函数&#xff0c;越来越多的引起了人们的注意。 GELU (Gaussian Error Linear Units) 是一种基于高斯误差函数的激活函数&#xff0c;相较于 ReLU 等激活函数&#xff0c…

java版工程项目管理系统-功能清单 图文解析

Java版工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离 功能清单如下&#xff1a; 首页 工作台&#xff1a;待办工作、消息通知、预警信息&#xff0c;点击可进入相应的列表 项目进度图表&#xff1a;选择&#xff08;总体或单个&#xff09;项目显示…

MySQL事务的四大特性及事务的隔离级别

什么是事务&#xff1f;Transaction 常言道&#xff1a;能不麻烦就不麻烦&#xff0c;能简单化就简单化。但是为什么需要事务呢&#xff1f; 事务&#xff1a;用来保证一个业务的完整性&#xff0c;最大的优势就是回滚&#xff0c;并撤销正在进行的所有未提交的修改&#xff1…

linux运行串口相关的java.jar报错:java.lang.UnsatisfiedLinkError

目录 linux运行串口相关的java.jar报错如下&#xff1a; java.lang.UnsatisfiedLinkError是Java中的一个错误类型&#xff0c;通常发生在调用本地&#xff08;native&#xff09;方法或使用JNI&#xff08;Java Native Interface&#xff09;时。 在Java中&#xff0c;本地方…

微分中值定理—柯西中值定理

微分中值定理—柯西中值定理前面我们已经学习了罗尔中值定理,和拉格朗日中值定理&#xff0c;它们的相同点是&#xff0c;研究的曲线都能用函数来表示。那假如曲线不能被函数表示呢&#xff0c;用柯西中值定理。 1 定义 柯西中值定理是拉格朗日中值定理的推广。如果&#xff0c…

助力企业节能降耗:综合能效管理之场景控制

企业综合能效管理系统是为企业提供能耗管理、电能质量和用能安全监测的整套解决方案&#xff0c;系统可采集多种类型能源&#xff08;电、水、天然气、工业气体、冷热量等&#xff09;数据&#xff0c;并对能源消耗进行分析&#xff0c;包括分类分项能耗、区域能耗、部门能耗数…

海思编码:1、mpp系统详谈以及VI、VPSS、VENC之间的关系

在HiMPP手册中都会有这么一张图 1、VI部分 视频输入设备 视频输入设备支持标准 BT.656、标准 BT.1120、自定义时序等若干种时序输入&#xff0c;负责对时序进行解析。 视频物理通道 视频物理通道负责将输入设备解析后得到的视频数据输出到 DDR。在真正将数据输出到 DDR 之前…

FTP-----局域网内部远程桌面

此文包含详细的图文教程。有疑问评论区留言。博主第一时间解决。 目录 一、被远程桌面的电脑 1.开启远程权限 2.添加账户&#xff0c;有本地账户跳过这步 3.帐号隶属于 远程桌面 4.帐号隶属于 本地用户组 二、本地电脑连接远程桌面 前提条件&#xff1a; 1.两台电脑在…

接口自动化【二】(图形验证码处理)

文章目录 前言一、图形验证码图片获取(需要实际截图做对比补充)二、调第三方接口获取验证码三、后端登录接口&#xff08;举例&#xff09;总结前言 讲解了图片验证的处理&#xff1b;在接口测试中遇见的一些问题&#xff1b;多部分编码的注意点 一、图形验证码图片获取(需要实…

【4.13(补)】二叉搜索树的遍历、插入、删除

文章目录二叉搜索树的最近公共祖先二叉搜索树中的插入操作删除二叉搜索树中的节点二叉搜索树的最近公共祖先 235. 二叉搜索树的最近公共祖先 - 力扣&#xff08;LeetCode&#xff09; 因为二叉搜索树是有序的&#xff0c;第一次找到p和q中间的值&#xff0c;就是最近的公共祖先…

【FPGA-DSP】第六期:Black Box调用流程

目录 1. 实际操作流程 1.1 Verilog 代码编写 1.2 system generator操作 1.2.1 Black box模块 1.2.2 Simulink 搭建 2. Simulink模型优化 System Generator是一个Xilinx公司的工具&#xff0c;用于设计数字信号处理系统。Black Box是System Generator中的一个block&#…

【数值模型系列】CAMx编译运行中的几个小问题

最近在CAMx的编译运行工作中&#xff0c;遇到了几个小问题&#xff0c;在此记录一下。 问题1&#xff1a;CAMx2IOAPI编译报错 报错如下&#xff1a; CAMx2IOAPI依赖于IOAPI和NetCDF库&#xff0c;在Makefile文件中加以配置即可&#xff0c;但出现此错的原因其实是默认的Makef…