From e2cb26176503c8673ffbb221ed53cc8676786a5b Mon Sep 17 00:00:00 2001 From: xiongraorao Date: Thu, 9 Aug 2018 17:37:39 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=9D=A2=E8=AF=95=E4=BF=A1?= =?UTF-8?q?=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- code/src/main/java/com/raorao/Test.java | 8 ++++ .../java/com/raorao/java/althorithm/Bag.java | 34 ++++++++++++++ .../com/raorao/java/base/FunctionTest.java | 40 ++++++++++++++++ .../com/raorao/java/base/MapMergeTest.java | 46 +++++++++++++++++++ interview/README.md | 4 +- interview/blog.md | 1 + 6 files changed, 132 insertions(+), 1 deletion(-) create mode 100644 code/src/main/java/com/raorao/java/althorithm/Bag.java create mode 100644 code/src/main/java/com/raorao/java/base/FunctionTest.java create mode 100644 code/src/main/java/com/raorao/java/base/MapMergeTest.java diff --git a/code/src/main/java/com/raorao/Test.java b/code/src/main/java/com/raorao/Test.java index 95c715fa..97f16ffa 100644 --- a/code/src/main/java/com/raorao/Test.java +++ b/code/src/main/java/com/raorao/Test.java @@ -7,11 +7,14 @@ import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.ArrayDeque; import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; import java.util.Deque; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.PriorityQueue; +import java.util.Random; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.BlockingDeque; import java.util.concurrent.BlockingQueue; @@ -21,6 +24,11 @@ import java.util.concurrent.ConcurrentLinkedQueue; import java.util.concurrent.DelayQueue; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.PriorityBlockingQueue; +import java.util.function.Supplier; +import java.util.stream.Collectors; +import java.util.stream.IntStream; +import java.util.stream.Stream; +import sun.awt.image.ImageWatched.Link; /** * . diff --git a/code/src/main/java/com/raorao/java/althorithm/Bag.java b/code/src/main/java/com/raorao/java/althorithm/Bag.java new file mode 100644 index 00000000..cccbdde7 --- /dev/null +++ b/code/src/main/java/com/raorao/java/althorithm/Bag.java @@ -0,0 +1,34 @@ +package com.raorao.java.althorithm; + +/** + * 01背包问题. + * + * 题目描述:有n个物品,每个物品有对应的重量和价值,在包的容量限制下,求最大的价值。 + * + * @author Xiong Raorao + * @since 2018-08-09-15:21 + */ +public class Bag { + + public static void main(String[] args) { + int[] w = new int[] {2, 3, 4, 5}; + int[] v = new int[] {3, 4, 5, 6}; + System.out.println(maxValue(w, v, 8)); + } + + public static int maxValue(int[] w, int[] v, int capacity) { + int n = w.length;// 物品的数量 + int[][] f = new int[n + 1][capacity + 1]; // 背包最优解,f[i][j]表示的是当前背包容量j,前i个物品最佳组合对应的价值; + for (int i = 1; i <= n; i++) { + for (int j = 1; j <= capacity; j++) { + if (j < w[i-1]) { + f[i][j] = f[i - 1][j]; + } else { + f[i][j] = Math.max(f[i - 1][j], f[i - 1][j - w[i - 1]] + v[i - 1]); + } + } + } + return f[n][capacity]; + } + +} diff --git a/code/src/main/java/com/raorao/java/base/FunctionTest.java b/code/src/main/java/com/raorao/java/base/FunctionTest.java new file mode 100644 index 00000000..0c87215d --- /dev/null +++ b/code/src/main/java/com/raorao/java/base/FunctionTest.java @@ -0,0 +1,40 @@ +package com.raorao.java.base; + +import java.util.function.Consumer; +import java.util.function.Predicate; + +/** + * 函数接口. + * + * @author Xiong Raorao + * @since 2018-08-09-12:59 + */ +public class FunctionTest { + + public static void main(String[] args) { + new Add(()-> System.out.println("加法")).compute(); + } + + public static void myConsumer(Consumer item){ + item.accept(12); + } + + static interface Compute { + + void compute(); + } + + static class Add implements Compute { + + Compute target; + + public Add(Compute compute) { + target = compute; + } + + @Override + public void compute() { + target.compute(); + } + } +} diff --git a/code/src/main/java/com/raorao/java/base/MapMergeTest.java b/code/src/main/java/com/raorao/java/base/MapMergeTest.java new file mode 100644 index 00000000..3374f6a6 --- /dev/null +++ b/code/src/main/java/com/raorao/java/base/MapMergeTest.java @@ -0,0 +1,46 @@ +package com.raorao.java.base; + +import java.util.ArrayDeque; +import java.util.Arrays; +import java.util.Comparator; +import java.util.HashMap; +import java.util.Map; +import java.util.stream.Collectors; +import java.util.stream.IntStream; +import java.util.stream.Stream; + +/** + * hash 的函数式编程用法,统计网站访问次数. + * + * @author Xiong Raorao + * @since 2018-08-09-10:18 + */ +public class MapMergeTest { + + public static void main(String[] args) { + String[] websites = new String[] {"https://www.baidu.com", "https://www.baidu.com", + "https://www.baidu.com", "https://www.google.com", "https://www.google.com", + "https://www.sina.com.cn"}; + Map map1 = new HashMap<>(); + Map map2 = new HashMap<>(); + merge(map1, websites); + incrementPageVisit(map2, websites); + map1.forEach((k,v)-> System.out.print("k= " +k + ", v= " + v + "\t")); + System.out.println(); + map2.forEach((k,v)-> System.out.print("k= " +k + ", v= " + v + "\t")); + } + + public static void merge(Map map, String[] args) { + Stream.of(args).forEach((e) -> map.merge(e, 1, (oldValue, value) -> (oldValue + value))); + System.out.println(Stream.of(args).collect(Collectors.joining(", "))); + } + + public static void incrementPageVisit(Map pageVisits, String[] pages) { + for (String page : pages) { + if (!pageVisits.containsKey(page)) { + pageVisits.put(page, 0); + } + pageVisits.put(page, pageVisits.get(page) + 1); + } + } +} diff --git a/interview/README.md b/interview/README.md index e1dc4b81..61993a18 100644 --- a/interview/README.md +++ b/interview/README.md @@ -39,7 +39,9 @@ Thoutworks | 内推 | | [内推链接](https://jinshuju.net/f/CcO2JA) 爱奇艺 | 内推/网申
  • 内推码:DEiSUa | 面试时间:8.17 后 | [大数据开发岗位](http://zhaopin.iqiyi.com/job-detail-info-school.html?id=1824&isschool=1)
  • 8.8 日 已投简历 百度互联网数据研发部 | 内推 | 邮箱:1064550387@qq.com |
  • 8.8 发送邮件 WPS | 内推 |
  • 投递: 8.1-8.25
  • 内推直通面试
  • 面试: 8月下旬 - 8 月底 | [网申链接](http://join.wps.cn)
  • 内推邮箱:s_huangsidi@wps.cn
  • 8.8 发送邮件 -新浪微博 | 内推 | 内推码: 5VLHS | [校招官网](http://career.sina.com.cn/welcome.html) +新浪微博 | 内推 | 内推码: 5VLHS | [校招官网](http://career.sina.com.cn/welcome.html)
  • 8.8 已投简历 +秒针 | 内推 | 邮箱 1315215440@qq.com | 8.9 已发送邮件 +百度智能云三部
  • 基础平台研发工程师 | 内推 | 邮箱:zhangzuliang@baidu.com | 8.9 发送邮件 ## 2. 面试记录 diff --git a/interview/blog.md b/interview/blog.md index f3454c15..04c92bbe 100644 --- a/interview/blog.md +++ b/interview/blog.md @@ -14,6 +14,7 @@ [B_树和B+树](https://blog.csdn.net/crystal6918/article/details/78073721) [hashmap linkedhashmap treemap的区别](https://www.cnblogs.com/acm-bingzi/p/javaMap.html) [B树,B-树和B+树的区别](https://blog.csdn.net/zwz2011303359/article/details/63262541) +[01背包问题](https://www.cnblogs.com/Christal-R/p/Dynamic_programming.html) ## 数据库原理