(尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/53588062 冷血之心的博客)

题目1:

找到第一次出差错的版本

      每个项目开发时,我们用代码版本控制工具,每次提交都会更新代码版本。版本号从1到n递增。有人提交代码后,导致后续的代码在单元测试中,都是错的。

请找到第一个错误的版本号。

代码如下:

package com.ywq.test1;import org.junit.Test;public class Solution1 implements VersionControl {@Testpublic void test(){int result = findFirstBadVersion(9);System.out.println("第一个错误版本为:"+result);}public  int findFirstBadVersion(int n) {int left = 1;int right = n;//建立循环,目标是找出好、坏的分界点。while (left + 1 < right) {int mid=(left+right)/2;boolean flag = isBad(mid);if (flag) {right = mid;} else {left = mid;}}//        当退出循环时,left和right相差1if(isBad(left)){return left;}else {return right;}}@Overridepublic boolean isBad(int k) {        if (k >= 3) {return true;} else {return false;}}}interface VersionControl {public boolean isBad(int k);
}
题目2:
合并两个有序的链表。其中链表的节点的数据结构如下:
public class ListNode {public int val;public ListNode next;public ListNode(int val) {this.val = val;this.next = null;}
}

代码如下:

package com.ywq.test2;import org.junit.Test;public class Solution2 {@Testpublic void test() {//创建有序链表list1  0-2-5-7-9ListNode list1 = new ListNode(0);  list1.next = new ListNode(2);  list1.next.next = new ListNode(5);  list1.next.next.next = new ListNode(7); list1.next.next.next.next = new ListNode(9);//创建有序链表list2  1-3-6-8ListNode list2 = new ListNode(1);  list2.next = new ListNode(3);  list2.next.next = new ListNode(6);  list2.next.next.next = new ListNode(8); //调用合并方法ListNode list3 = mergeKLists(list1, list2); //将结果输出while (list3 != null) {  System.out.println(list3.val);  list3 = list3.next;  }  }public ListNode mergeKLists(ListNode list1, ListNode list2) {ListNode result=null;if (list1 == null && list2 == null) {  return null;  }  if (list1 == null) {  result = list2;  return result;  }  if (list2 == null) {  result = list1;  return result;  }  if (list1.val > list2.val) {  result = list2;  list2 = list2.next;  } else {  result = list1;  list1 = list1.next;  }  result.next = mergeKLists(list1, list2);  return result;  }}class ListNode {public int val;public ListNode next;public ListNode(int val) {this.val = val;this.next = null;}
}
题目3:
两数之和
给一个整数数组,找到两个数使得他们的和等于一个给定的数target。
你需要实现的函数twoSum需要返回这两个数的下标, 并且第一个下标小于第二个下标。

 

代码如下:

package com.ywq.test3;import java.util.HashMap;import org.junit.Test;public class Solution3 {@Testpublic void test() {int[] a = { 2, 4, 8, 12, 5 };int target = 17;int[] sum = twoSum(a, target);for (int i : sum) {System.out.println(i);}}public int[] twoSum(int[] a, int target) {//创建结果数组int[] result = new int[2];HashMap<Integer, Integer> map = new HashMap<>();//建立循环,遍历target-a[i]是否在map中for (int i = 0; i < a.length; i++) {if (map.containsKey(target - a[i])) {//确定输出角标的先后顺序if (i > map.get(target - a[i])) {result[0] = map.get(target - a[i]);result[1] = i;} else {result[0] = i;result[1] = map.get(target - a[i]);}} else {map.put(a[i], i);}}return result;}
}
题目4:
生产者消费者
写代码实现:
3个生产者生产消息,放到一个队列里。5个消费者消费消息。
生产者生产的消息格式:
生产者 ID + 时间戳 + 随机文本
消费者消费消息后,打印出消费者 ID 和消费的内容。
举例:
producer message:
1002_${timestamp}_helloworld42129
 
consumer:

consumer ID = 2003, consume message:1002_${timestamp}_helloworld42129

代码如下:

package com.ywq.test5;import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;public class Solution4 {public static void main(String[] args) {BlockingQueue q = new LinkedBlockingQueue();Producer p1 = new Producer(q);Producer p2 = new Producer(q);Producer p3 = new Producer(q);Consumer c1 = new Consumer(q);Consumer c2 = new Consumer(q);Consumer c3 = new Consumer(q);Consumer c4 = new Consumer(q);Consumer c5 = new Consumer(q);p1.setName("生产者1");p2.setName("生产者2");p3.setName("生产者3");c1.setName("消费者1");c2.setName("消费者2");c3.setName("消费者3");c4.setName("消费者4");c5.setName("消费者5");p1.start();p2.start();p3.start();c1.start();c2.start();c3.start();c4.start();c5.start();}
}class Producer extends Thread {private final BlockingQueue queue;Producer(BlockingQueue q) {queue = q;}// 获取当前时间public String getTime() {SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 设置日期格式String time = df.format(new Date());// new Date()为获取当前系统时间return time;}public void run() {while (true) {try {System.out.println("生产者生产的消息为:"+Thread.currentThread().getName() +" "+ getTime()+" "+Math.random());queue.put(Thread.currentThread().getName() +" "+ getTime()+" "+Math.random());Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}}}class Consumer extends Thread {private final BlockingQueue queue;Consumer(BlockingQueue q) {queue = q;}public void run() {while (true) {try {System.out.println("consumer ID="+Thread.currentThread().getName() +", "+"consumer message:"+ queue.take());Thread.sleep(20000);} catch (InterruptedException e) {e.printStackTrace();}}}}

如果对你有帮助,记得点赞哦~欢迎大家关注我的博客,可以加群366533258交流讨论哈~

扬帆起航,再踏征程(三)相关推荐

  1. 扬帆起航,再踏征程(一)

    (尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/53525075 冷血之心的博客) 数据结构与算法: 1.以最少的代码 ...

  2. 扬帆起航,再踏征程(四)

    (尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/53612643 冷血之心的博客) 1.SpringMVC是如何处理用 ...

  3. 九万里风鹏正举,扬帆起航,踏上新征程

    毕业后就从事了现在这份工作,算一算已经10多年了.日常工作内容包括软件开发.系统维护.网络搭建.软件平台应用等,算是专业对口,平时空闲时间也比较多.人已近中年,却还有一颗躁动不安的心,始终想在技术上再 ...

  4. 金三银四,磨砺锋芒;剑指大厂,扬帆起航(2020年最全大厂WEB前端面试题精选)上

    引言 元旦匆匆而过,2020年的春节又接踵而来,大家除了忙的提着裤子加班.年底冲冲冲外,还有着对于明年的迷茫和期待!2019年有多少苦涩心酸,2020年就有更多幸福美好,加油,奥利给!怀着一颗积极向上 ...

  5. 金三银四,磨砺锋芒;剑指大厂,扬帆起航(2020年最全大厂WEB前端面试题精选)下

    引言 元旦匆匆而过,2020年的春节又接踵而来,大家除了忙的提着裤子加班.年底冲冲冲外,还有着对于明年的迷茫和期待!2019年有多少苦涩心酸,2020年就有更多幸福美好,加油,奥利给!怀着一颗积极向上 ...

  6. 对学校的希望和寄语_南中医举行2020年开学典礼,校长胡刚寄语“后浪”:乘风破浪,扬帆起航...

    现代快报讯(通讯员 刘丹青 记者 仲茜)"钟山脚下.扬子江畔,杏林学子济济一堂.青春风华.意气轩昂,满园桃李竟芬芳."9月17日,南京中医药大学举行2020级新生开学典礼.为了让每 ...

  7. 临沧农业学校计算机,放飞梦想,扬帆起航!

    放飞梦想,扬帆起航! 开学啦!!! 丹桂飘香正八月,又到一年迎新时!! 2018年8月26日上午,临沧市农业学校迎来了2018级新一届学生.一大早,来自四面八方的莘莘学子便怀揣着梦想与憧憬,陆续走进我 ...

  8. 扬帆起航:毫米波雷达开发手册之硬件配置

    写在前面 ​ 深知新手在接触毫米波雷达板硬件时需要花费的沉没成本,因此在行将告别毫米波雷达之际,总结这两年以来在毫米波雷达上的一些经验和教训. ​ 本文档用于为实现基于AWR1243BOOST等单板毫 ...

  9. 正宇控股集团丨正宇,扬帆起航

    你是一颗耀眼璀璨的明珠 你是一艘承载理想的航母 你是生命奇迹的见证 你是诠释爱心的净土 大千世界茫茫人海 是你把我们相拥在一起 都市繁华乡间小路 是你激励我们前进的脚步 只要我们追求梦想 绽放五彩斑斓 ...

最新文章

  1. html恢复按钮按下前的状态,如何通过点击按钮暂停和恢复html页面的执行
  2. 计算机怎么删除表格,电脑中删除Excel2010表格多余图片的三种方法
  3. java私有属性和私有方法_Java接口–历年来Java 9之旅–默认方法和私有方法
  4. 如何在金山毒霸软件里安装腾讯视频
  5. 华为8545m5补全shell_华为hs8145v5 改华为界面和默认超密(一)
  6. c# oldb连接_如何使用C#中的OleDbConnection 连接读取Excel?
  7. hashmap value为null_从这五个方面看hashmap,新手一遍就能懂
  8. [UML]UML系列——类图class的实现关系Realization
  9. 信号与系统19(拉普拉斯逆变换)
  10. 【MicroPython ESP32】ssd1306 0.96“OLED+网络时钟
  11. 单片机中使用三极管驱动蜂鸣器
  12. 从头开始制作51智能车——循迹+遥控+避障(二)——电机驱动模块
  13. 这十年,阿里开发者毕玄的日常
  14. Oracle中的分析函数over()的详细解析
  15. 使用uCommand执行复杂的任务
  16. WEB浏览器视频流播放方案
  17. How to set dev_loss_tmo and fast_io_fail_tmo persistently, using a udev rule
  18. 【愚公系列】2022年01月 攻防世界-进阶题-MISC-76(warmup)
  19. 2022-2028年中国半导体专用设备行业市场深度分析及投资前景趋势报告
  20. 抖音seo源码/抖音seo源码代开发源代码搭建

热门文章

  1. 程序员怎么样用代码表白520/情人节/过生日/纪念日:爱心飘落(表白小视频、表白网页)
  2. Android应用程序签名(官方文档中文版)
  3. 旅行社微信小程序,助力旅游企业引流获客,提高转化率
  4. 暑期学习日记26:js实现支付成功页面跳转
  5. 【SQL高级教程】数据库学习笔记
  6. MYSQL乐观锁实现
  7. 基于php的便民团购网站设计
  8. 【java笔记】java中用于小数进位的BigDecimal.setScale方法
  9. 淘宝网的实习生笔试题以及经历--2011 4 1(转载请注明出处,即原创网址)
  10. [翻译] 禁用双GPU笔记本电脑的独显 Disabling discrete graphics in dual-GPU laptops