首页 文章 精选 留言 我的

精选列表

搜索[数据脱敏],共10000篇文章
优秀的个人博客,低调大师

java数据结构题之约瑟夫问题

约瑟夫问题:转载自约瑟夫问题 据说着名犹太历史/数学家约瑟夫(Josephus)有过以下的故事:在罗马人占领乔塔帕特後,40个犹太士兵与约瑟夫躲到一个洞中,眼见脱逃无望,一群人决定集体自杀,约瑟夫建议自杀方式,41个人排成圆圈,由第1个人开始报数,每报数到5的人就必须自杀,然後由下一个重新报数,直到所有人都自杀身亡为止。如果你是约瑟夫,你应该在哪个位置才能活下来(最后只剩下你)? 我的答案: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 package p1; import java.util.LinkedList; import java.util.List; public class KillSelf{ //构造链式列表,用来模拟人。 private static List<String>list= new LinkedList<String>(); //记忆自杀那个人前后的人集合有序子列表 private static List<String>listBefore,listAfter; //自杀那个人的编号从1开始 private static StringkilledNum= null ; private static int KILL_INDEX= 4 ; //记录自杀的总人数 private static int sum= 0 ; public static void main(String[]args){ //记住每个从最开始的编号 for ( int i= 1 ;i<= 41 ;i++) { list.add(i+ "" ); } //其实自杀的过程,是一个循环的过程,所以用循环来解决。 while ( true ) { //获取自杀位置前后的子集 if (list.size()>= 5 ) //当人数大于等于5个人时 { listBefore= new LinkedList<String>(list.subList( 0 ,KILL_INDEX)); //不能直接用subList的返回值,要包装一下 listAfter= new LinkedList<String>(list.subList(KILL_INDEX+ 1 ,list.size())); } else if (list.size()> 1 &&list.size()< 5 ) //当人数多于1个人但是少于5个人时 { KILL_INDEX= 5 %list.size()- 1 ; //这个判断很巧妙 if (KILL_INDEX> 0 &&KILL_INDEX<list.size()- 1 ) { listBefore= new LinkedList<String>(list.subList( 0 ,KILL_INDEX)); //不能直接用subList的返回值,要包装一下 listAfter= new LinkedList<String>(list.subList(KILL_INDEX+ 1 ,list.size())); } else if (KILL_INDEX== 0 ) { listBefore.clear(); listAfter= new LinkedList<String>(list.subList(KILL_INDEX+ 1 ,list.size())); } else if (KILL_INDEX==list.size()- 1 ) { listBefore= new LinkedList<String>(list.subList( 0 ,KILL_INDEX)); listAfter.clear(); } } else break ; //将子集的后与前连接起来,更新总的集合 killedNum=list.get(KILL_INDEX); sum++; System.out.println( "编号" +killedNum+ "已自杀!-----自杀总人数达" +sum); //更新list list.clear(); list.addAll(listAfter); list.addAll(listBefore); System.out.println( "剩余人员编号:" +list); System.out.println( "" ); } System.out.println( "" ); System.out.println( "结论:处在" +list.get( 0 )+ "号才不会自杀" ); } } 但是网上的帖子,几行代码就解决问题了,这就是算法的魅力! 本文转自屠夫章哥 51CTO博客,原文链接:http://blog.51cto.com/4259297/1658382,如需转载请自行联系原作者

优秀的个人博客,低调大师

数据|java API写入HDFS文件-put

1:创建一个可以上传到hdfs文件系统的文件(wc.input) 2:编写java代码调用api完成附件的上传相当于执行-put命令 3:查看执行结果 全部代码 package com.lizh.hadoop.hdfs; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FSDataInputStream; import org.apache.hadoop.fs.FSDataOutputStream; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.IOUtils; public class HdfsApp { public static FileSystem getFileSystem() throws IOException{ Configuration conf = new Configuration(); FileSystem fs = FileSystem.get(conf); return fs; } public static void readFile(String path1) { try { FileSystem fs = getFileSystem(); Path path = new Path(path1); FSDataInputStream in = fs.open(path); IOUtils.copyBytes(in, System.out, 4000, false); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } public static void main(String[] args) throws Exception{ //String path ="/user/beifeng/mapreduce/wordcount/input/wc.input"; //readFile(path); //把/opt/modules/hadoop-2.5.0/wc.input 内容写入到 /user/beifeng/put-wc.input //write file FileInputStream fisin =null; FSDataOutputStream fsoutstream =null; try { String filename="/user/beifeng/put-wc.input";//文件系统目录 Path inputpath = new Path(filename); FileSystem fs = getFileSystem(); fsoutstream = fs.create(inputpath); fisin = new FileInputStream(new File("/opt/modules/hadoop-2.5.0/wc.input"));//本地系统目录文件 IOUtils.copyBytes(fisin, fsoutstream, 4000, false); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); }finally{ IOUtils.closeStream(fsoutstream); IOUtils.closeStream(fisin); } } } 写文件流程图

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册