当前位置: 首页 > news >正文

Java实现 - 华为2016研发工程师编程题

文章目录

  • 删数
  • 字符集合
  • 数独


删数

题目描述

有一个数组 a[N] 顺序存放 0 ~ N-1 ,要求每隔两个数删掉一个数,到末尾时循环至开头继续进行,求最后一个被删掉的数的原始下标位置。以 8 个数 (N=7) 为例 :{ 0,1,2,3,4,5,6,7 },0 -> 1 -> 2 (删除) -> 3 -> 4 -> 5 (删除) -> 6 -> 7 -> 0 (删除),如此循环直到最后一个数被删除。

数据范围:
1 ≤ n ≤ 1000

输入

每组数据为一行一个整数n(小于等于1000),为数组成员数

输出

一行输出最后一个被删掉的数的原始下标位置。

示例一

输入:8
输出:6

示例二

输入:1
输出:0

通过代码

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);int N;while (in.hasNext()) {List<Integer> list = new ArrayList<>();N = in.nextInt();for (int i = 0; i < N; i++) {list.add(i);}int i = 0;while (list.size() > 1) {i = (i + 2) % list.size();list.remove(i);}System.out.println(list.get(0));}}
}

字符集合

题目描述

输入一个字符串,求出该字符串包含的字符集合,按照字母输入的顺序输出。

数据范围:输入的字符串长度满足 1≤n≤100 ,且只包含大小写字母,区分大小写。

本题有多组输入

输入描述

每组数据输入一个字符串,字符串最大长度为100,且只包含字母,不可能为空串,区分大小写。

输出描述

每组数据一行,按字符串原有的字符顺序,输出字符集合,即重复出现并靠后的字母不输出。

示例一

输入:abcqweracb

输出:abcqwer

示例二

输入:aaa

输出:a

通过代码

import java.util.LinkedHashSet;
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);while (in.hasNext()) {String str = in.next();LinkedHashSet<Character> set = new LinkedHashSet<>();for (int i = 0; i < str.length(); i++) {set.add(str.charAt(i));}for (Character c : set) {System.out.print(c);}System.out.println();}}
}

数独

题目描述

数独是一个我们都非常熟悉的经典游戏,运用计算机我们可以很快地解开数独难题,现在有一些简单的数独题目,请编写一个程序求解。
如有多解,输出一个解

输入描述

输入9行,每行为空格隔开的9个数字,为0的地方就是需要填充的。

输出描述

输出九行,每行九个空格隔开的数字,为解出的答案。

解题思路

l两个通过代码的思路是一样的,采用深度优先搜索DFS

可以把数独看成是9x9的二维数组或者是长度为81的一位数组均可。

当到达数组的某一位置时,判断该位置上的数字是否为0(为0表示这个位置是待填写的位置)

  • 如果不是0,则需要继续遍历到下一个位置
  • 如果是0,则需要找出可以填在该位置上的合法的数

所谓合法的数,也就是指,该位置所处的行,列和9宫格中,都还没有出现过的数

  • 通过代码一:是从1到9先填入,然后再检查填入的数是否合法
    • 如果合法,则进入下一个位置继续判断
    • 如果不合法,则换下一个数填,重新判断是否合法
  • 通过代码二:是先把行、列、九宫格中已经出现的数记录下来,再填入当前没有出现过的数

当遍历到最后时,则已经得到了一组可行解,设置isOk为true,则可以直接结束程序了

通过代码一

import java.util.Scanner;public class Main {static boolean isOk;static int[][] matrix = new int[9][9];public static void main(String[] args) {Scanner in = new Scanner(System.in);while (in.hasNext()) {for (int i = 0; i < 81; i++) {matrix[i / 9][i % 9] = in.nextInt();}dfs(0);for (int i = 0; i < 81; i++) {System.out.print(matrix[i / 9][i % 9]);System.out.print((i + 1) % 9 == 0 ? "\n" : " ");}}}public static void dfs(int n) {if (n > 80) {isOk = true;return;}int x = n / 9;int y = n % 9;//如果当前数独这个位置有数,则继续下一个位置if (matrix[x][y] != 0) {dfs(n + 1);} else {for (int i = 1; i <= 9; i++) {matrix[x][y] = i;if (check(x, y)) {dfs(n + 1);if (isOk) {return;}}matrix[x][y] = 0;}}}//用来检查在(x,y)位置放数字i是否合适public static boolean check(int x, int y) {for (int i = 0; i < 9; i++) {if (i != y && matrix[x][i] == matrix[x][y]) {return false;}if (i != x && matrix[i][y] == matrix[x][y]) {return false;}}int start_x = (x / 3) * 3;int start_y = (y / 3) * 3;for (int i = start_x; i < start_x + 3; i++) {for (int j = start_y; j < start_y + 3; j++) {if (i != x && j != y && matrix[i][j] == matrix[x][y]) {return false;}}}return true;}}

通过代码二

import java.util.Scanner;public class Main {static boolean isOk;public static void main(String[] args) {Scanner in = new Scanner(System.in);int[][] matrix = new int[9][9];while (in.hasNext()) {for (int i = 0; i < 81; i++) {matrix[i / 9][i % 9] = in.nextInt();}dfs(0, matrix);for (int i = 0; i < 81; i++) {System.out.print(matrix[i / 9][i % 9]);System.out.print((i + 1) % 9 == 0 ? "\n" : " ");}}in.close();}private static void dfs(int n, int[][] matrix) {int x = n / 9;int y = n % 9;if (n > 80) {isOk = true;return;}if (matrix[x][y] != 0) {dfs(n + 1, matrix);} else {boolean[] flag = new boolean[10];//检查这一行for (int i = 0; i < 9; i++) {flag[matrix[x][i]] = true;}//检查这一列for (int i = 0; i < 9; i++) {flag[matrix[i][y]] = true;}//检查这一个方块int start_x = (x / 3) * 3;int start_y = (y / 3) * 3;for (int i = start_x; i < start_x + 3; i++) {for (int j = start_y; j < start_y + 3; j++) {flag[matrix[i][j]] = true;}}for (int i = 1; i < 10; i++) {if (!flag[i]) {matrix[x][y] = i;dfs(n + 1, matrix);if (isOk) {return;}matrix[x][y] = 0;}}}}
}

相关文章:

Java实现 - 华为2016研发工程师编程题

文章目录删数字符集合数独删数 题目描述 有一个数组 a[N] 顺序存放 0 ~ N-1 &#xff0c;要求每隔两个数删掉一个数&#xff0c;到末尾时循环至开头继续进行&#xff0c;求最后一个被删掉的数的原始下标位置。以 8 个数 (N7) 为例 :&#xff5b; 0&#xff0c;1&#xff0c;2…...

nginx的七层负载均衡

文章目录一、负载均衡介绍二、nginx的配置文件三、实验过程总结一、负载均衡介绍 四层负载均衡 所谓四层负载均衡是指OSI七层模型中的传输层, 那么传输层Nginx已经支持TCP/IP的控制, 所以只需要对客户端的请求进行TCP/IP协议的包转发就可以实现负载, 那么他的好处是性能非常快,…...

信息加密技术

介绍信息加密 信息加密是实现数据保密性的手段。 信息加密&#xff08;Encryption&#xff09;是将明文信息转换为密文信息&#xff0c;使之在缺少特殊信息时不可读的过程。只有拥有解密方法的对象&#xff0c;经由解密过程&#xff0c;才能将密文还原为正常可读的内容。 现…...

RS485通信总线详解

RS485 总线详解 RS-485 是美国电子工业协会&#xff08;EIA&#xff09;在 1983 年批准了一个新的平衡传输标准&#xff08;Balanced Transmission Standard&#xff09;也称作差分&#xff0c;EIA 刚开始将 RS&#xff08;Recommended Standard&#xff09;做为标准的前缀&am…...

罗技LogitechFlow技术--惊艳的多电脑切换体验

作者&#xff1a;Eason_LYC 悲观者预言失败&#xff0c;十言九中。 乐观者创造奇迹&#xff0c;一次即可。 一个人的价值&#xff0c;在于他所拥有的。所以可以不学无术&#xff0c;但不能一无所有&#xff01; 技术领域&#xff1a;WEB安全、网络攻防 关注WEB安全、网络攻防。…...

社招中级前端笔试面试题总结

HTTP世界全览 互联网上绝大部分资源都使用 HTTP 协议传输&#xff1b;浏览器是 HTTP 协议里的请求方&#xff0c;即 User Agent&#xff1b;服务器是 HTTP 协议里的应答方&#xff0c;常用的有 Apache 和 Nginx&#xff1b;CDN 位于浏览器和服务器之间&#xff0c;主要起到缓存…...

东南大学研究生上学期英语期末总结

写在前面 作者&#xff1a;夏日 博客地址&#xff1a;https://blog.csdn.net/zss192 本文为东南大学研究生英语上学期期末总结&#xff0c;内容为根据老师所发 PPT 总结得来 相关资料&#xff1a; 点我查看 题型说明 Module 1 International Conference 50% 题型范围&am…...

leaflet 删除所有的marker图层,保留其他图层(085)

第085个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+leaflet项目中清除所有的marker图层,保留其他图层,详情请参考源代码。这里面主要用到了(layer instanceof L.Marker ,注意 L.Marker中Marker首字母要大写。 直接复制下面的 vue+leaflet源代码,操作2分钟即可运行…...

双因素方差分析全流程

上篇文章讲述了“单因素方差分析全流程总结”&#xff0c;单因素方差分析只是考虑了一个自变量&#xff08;定类&#xff09;与一个因变量&#xff08;定量&#xff09;之间的关系&#xff0c;但是在实际问题研究中可能研究两个或者几个因素与因变量之间的关系&#xff0c;例如…...

微信公众号抽奖怎么做_分享微信抽奖小程序制作的好处

在H5游戏中&#xff0c;抽奖是最受消费者喜爱的模式之一。将H5微信抽奖活动结合到营销中&#xff0c;可以带来意想不到的效果&#xff0c;带流量和曝光率&#xff0c;所以许多企业也会在做活动时添加上不同类型的H5微信抽奖活动。编辑那么&#xff0c;新手怎么搭建微信抽奖活动…...

逻辑回归—分类问题的操作顺序

对于二元分类问题来说&#xff0c;分类的结果和数据的特征之间仍呈现相关关系&#xff0c;但是y的值不再是连续的&#xff0c;是0&#xff5e;1的跃迁。但是在这个过程中&#xff0c;什么仍然是连续的呢&#xff1f;”是概率&#xff0c;概率是逐渐升高的&#xff0c;当达到一个…...

查询服务器tns文件路径,oracle数据库tns配置方法详解

查询服务器tns文件路径,oracle数据库tns配置方法详解 TNS简要介绍与应用 Oracle中TNS的完整定义&#xff1a;transparence Network Substrate透明网络底层&#xff0c; 监听服务是它重要的一部分&#xff0c;不是全部&#xff0c;不要把TNS当作只是监听器。 TNS是Oracle Net…...

【数据结构】链表

目录 数据结构之链表&#xff1a;&#xff1a; SList.h 1.链表的概念及结构 2.链表的分类 SList.c 3.动态申请一个结点 4.单链表打印 5.单链表销毁 6.单链表头插 7.单链表头删 8.单链表尾插 9.单链表尾删 10.单链表查找 11.单链表在pos之前插入…...

一文讲明Hystrix熔断器

前言 解决问题: 主要防止服务器集群发生雪崩, 起到对服务器的保护作用 GitHub地址&#xff1a;https://github.com/Netflix/Hystrix/wiki 1 Hystrix是什么 1.1 分布式系统面临的问题 复杂分布式体系结构中的应用程序有数十个依赖关系&#xff0c;每个依赖关系在某些时候将不…...

第12篇:Java类核心构成要素分析

目录 1、Java类构成要素 1.1 如何定义类 1.2 如何定义变量 1.2.1 类变量 1.2.2 实例变量...

记一次 .NET 某医保平台 CPU 爆高分析

一&#xff1a;背景 1. 讲故事 一直在追这个系列的朋友应该能感受到&#xff0c;我给这个行业中无数的陌生人分析过各种dump&#xff0c;终于在上周有位老同学找到我&#xff0c;还是个大妹子&#xff0c;必须有求必应 &#x1f601;&#x1f601;&#x1f601;。 妹子公司的…...

滤波算法 | 无迹卡尔曼滤波(UKF)算法及其MATLAB实现

目录简介UKF滤波滤波流程和公式MATLAB程序结论简介 本文接着分享位姿跟踪和滤波算法中用到的一些常用程序&#xff0c;希望为后来者减少一些基础性内容的工作时间。以往分享总结见文章&#xff1a;位姿跟踪 | 相关内容目录和链接总结&#xff08;不断更新中~~~&#xff09; 本…...

JAVA开发(运行JAR包怎么指定虚拟机内存大小)

我们都使用过 java -jar xxx.jar包去运行jar包。但是有时候要指定jar包运行时内存&#xff0c;该怎么做&#xff0c;而且设置多大怎么衡量&#xff0c;很多人从来没有了解过。 背景&#xff1a; 我们开发java程序&#xff0c;可能涉及到开发环境&#xff0c;测试环境&#x…...

领导力的终极奥义

过去&#xff0c;我曾多次演讲、著书&#xff0c;把自己在长达半个世纪的经营实践中所体悟到的经营思想和方法告诉中国的企业家。 但是&#xff0c;对于任何一家企业来说&#xff0c;不管它倡导了多么高尚的经营哲学&#xff0c;不管它构建了多么精致的管理系统&#xff0c;这样…...

1-MATLAB APP Design-图像的输入与输出

一、APP 界面设计展示 新建一个空白的APP,在此次的学习中,我们会用到编辑字段(文本框)、 按钮、坐标区和面板,首先在界面中拖入一个编辑字段(文本框),在文本框中输入内容:图形的输入与输出,调整背景颜色,字体的颜色为黑色,字体的大小调为25....

【JVM】- 内存结构

引言 JVM&#xff1a;Java Virtual Machine 定义&#xff1a;Java虚拟机&#xff0c;Java二进制字节码的运行环境好处&#xff1a; 一次编写&#xff0c;到处运行自动内存管理&#xff0c;垃圾回收的功能数组下标越界检查&#xff08;会抛异常&#xff0c;不会覆盖到其他代码…...

工程地质软件市场:发展现状、趋势与策略建议

一、引言 在工程建设领域&#xff0c;准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具&#xff0c;正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...

ffmpeg(四):滤镜命令

FFmpeg 的滤镜命令是用于音视频处理中的强大工具&#xff0c;可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下&#xff1a; ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜&#xff1a; ffmpeg…...

【算法训练营Day07】字符串part1

文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接&#xff1a;344. 反转字符串 双指针法&#xff0c;两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...

Linux 中如何提取压缩文件 ?

Linux 是一种流行的开源操作系统&#xff0c;它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间&#xff0c;使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的&#xff0c;要在 …...

探索Selenium:自动化测试的神奇钥匙

目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...

Linux系统部署KES

1、安装准备 1.版本说明V008R006C009B0014 V008&#xff1a;是version产品的大版本。 R006&#xff1a;是release产品特性版本。 C009&#xff1a;是通用版 B0014&#xff1a;是build开发过程中的构建版本2.硬件要求 #安全版和企业版 内存&#xff1a;1GB 以上 硬盘&#xf…...

五子棋测试用例

一.项目背景 1.1 项目简介 传统棋类文化的推广 五子棋是一种古老的棋类游戏&#xff0c;有着深厚的文化底蕴。通过将五子棋制作成网页游戏&#xff0c;可以让更多的人了解和接触到这一传统棋类文化。无论是国内还是国外的玩家&#xff0c;都可以通过网页五子棋感受到东方棋类…...

Kubernetes 节点自动伸缩(Cluster Autoscaler)原理与实践

在 Kubernetes 集群中&#xff0c;如何在保障应用高可用的同时有效地管理资源&#xff0c;一直是运维人员和开发者关注的重点。随着微服务架构的普及&#xff0c;集群内各个服务的负载波动日趋明显&#xff0c;传统的手动扩缩容方式已无法满足实时性和弹性需求。 Cluster Auto…...

基于江科大stm32屏幕驱动,实现OLED多级菜单(动画效果),结构体链表实现(独创源码)

引言 在嵌入式系统中&#xff0c;用户界面的设计往往直接影响到用户体验。本文将以STM32微控制器和OLED显示屏为例&#xff0c;介绍如何实现一个多级菜单系统。该系统支持用户通过按键导航菜单&#xff0c;执行相应操作&#xff0c;并提供平滑的滚动动画效果。 本文设计了一个…...