今日头条面试手写代码-找出所有非递增减的子数组
2017-04-11 19:31
465 查看
import java.util.ArrayList; import java.util.HashSet; import java.util.List; public class Main { public static HashSet<String> set = new HashSet<>(); public static String fun(List<Integer> list) { StringBuilder sb = new StringBuilder(); for (Integer i : list) { sb.append(i); } return sb.toString(); } public static void DFS(int[] arr, int pos, List<Integer> res) { if (pos == arr.length) { if (res.size() > 0) { String ans = fun(res); if (!set.contains(ans)) { System.out.println(res); set.add(ans); } } return; } if (res.size() == 0) { // no join DFS(arr, pos + 1, res); // join List<Integer> newList = new ArrayList<>(res); newList.add(arr[pos]); DFS(arr, pos + 1, newList); } else { int last = res.get(res.size() - 1); if (last <= arr[pos]) { // no join DFS(arr, pos + 1, res); // join List<Integer> newList = new ArrayList<>(res); newList.add(arr[pos]); DFS(arr, pos + 1, newList); } else { // no join DFS(arr, pos + 1, res); } } } public static void main(String[] args) { int arr[] = new int[]{4, 6, 7, 7}; DFS(arr, 0, new ArrayList<>()); } }
面试中没写出来的原因总结:
1. 太紧张
2. 不适应牛客上的网页编程
3. 边界条件没写好
相关文章推荐
- 今日头条手写代码-找出指定规则下和最大的子数组
- 归并排序 笔试面试手写代码常考
- C++面试基础之手写代码
- Android 代码实现viewPager+fragment 模仿今日头条的顶部导航
- 今日头条面试总结——instanceof原理
- 【算法面试】n个数,找出其中最小的k个数,写出代码,要求最坏情况下的时间复杂度不能高于O(nlogk)
- 归并排序 笔试面试手写代码常考
- 二元树中找出何为某一值的所有路径 【微软面试100题 第四题】
- 2018.4.3_面试记录_今日头条
- 《今日头条2017暑期实习》:找出函数的最宽尖峰
- 程序员面试题目总结--数组(一)【递归求数组所有元素和、用一个for循环打印出一个二维数组、用递归判断数组是否是递增、有序数组中删除重复元素】
- 在二元树中找出和为某一值的所有路径的个人代码
- Java 找出四位数的所有吸血鬼数字 基础代码实例
- 面试常考手写代码之--二叉树非递归遍历
- 今日头条 CEO 张一鸣:面试了 2000 个年轻人,混得好的都有这 5 种特质
- 技术面试手写代码考题--二分查找
- 迷迷糊糊参加面试当然得挂。。。2017年4月13日今日头条测试开发
- 最新今日头条面试题目(js闭包、原型、继承、作用域)(2016)
- 面试100题004--二元树中找出和为某一值的所有路径
- Android 仿今日头条 可拖动的GridView 代码实例详解