• 最大连续子序列和
  public void maxSum(int[] nums) {int start = 0;int end = 0;int max = 0;int temp = 0;int ts = 0;for(int i = 0; i < nums.length; i++) {temp += nums[i];if(temp < 0) {ts = i + 1;temp = 0;} else {if(temp > max) {start = ts;end = i;max = temp;}}}System.out.println("maxSum = " + max + ", start : " + start + ", end = " + end);}
复制代码
  • 单链表逆序
  • 排序方法
  • 快排序算法
//时间复杂度:nlg(2n)
public void sort(int[] a,int low,int high){int start = low;int end = high;int key = a[low];while(end>start){//从后往前比较while(end>start&&a[end]>=key)  //如果没有比关键值小的,比较下一个,直到有比关键值小的交换位置,然后又从前往后比较end--;if(a[end]<=key){int temp = a[end];a[end] = a[start];a[start] = temp;}//从前往后比较while(end>start&&a[start]<=key)//如果没有比关键值大的,比较下一个,直到有比关键值大的交换位置start++;if(a[start]>=key){int temp = a[start];a[start] = a[end];a[end] = temp;}//此时第一次循环比较结束,关键值的位置已经确定了。左边的值都比关键值小,右边的值都比关键值大,但是两边的顺序还有可能是不一样的,进行下面的递归调用}//递归if(start>low) sort(a,low,start-1);//左边序列。第一个索引位置到关键值索引-1if(end<high) sort(a,end+1,high);//右边序列。从关键值索引+1到最后一个}
复制代码
  • 冒泡排序
/*** 冒泡排序   时间复杂度:n^2* 比较相邻的元素。如果第一个比第二个大,就交换他们两个。  * 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。  * 针对所有的元素重复以上的步骤,除了最后一个。* 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 * @param numbers 需要排序的整型数组*/public static void bubbleSort(int[] numbers){int temp = 0;int size = numbers.length;for(int i = 0 ; i < size-1; i ++) {for(int j = 0 ;j < size-1-i ; j++) {//交换两数位置if(numbers[j] > numbers[j+1]) {temp = numbers[j];numbers[j] = numbers[j+1];numbers[j+1] = temp;}}}}
复制代码
  • 选择排序
/*** 选择排序算法  时间复杂度:n^2* 在未排序序列中找到最小元素,存放到排序序列的起始位置  * 再从剩余未排序元素中继续寻找最小元素,然后放到排序序列末尾。 * 以此类推,直到所有元素均排序完毕。 * @param numbers*/public static void selectSort(int[] arr) {for (int i = 0; i < arr.length - 1; i++) {int minIndex = i; // 用来记录最小值的索引位置,默认值为ifor (int j = i + 1; j < arr.length; j++) {if (arr[j] < arr[minIndex]) {minIndex = j; // 遍历 i+1~length 的值,找到其中最小值的位置}}// 交换当前索引 i 和最小值索引 minIndex 两处的值if (i != minIndex) {int temp = arr[i];arr[i] = arr[minIndex];arr[minIndex] = temp;}// 执行完一次循环,当前索引 i 处的值为最小值,直到循环结束即可完成排序}}
复制代码
  • 插入排序
/**  * 插入排序 时间复杂度:n^2* * 从第一个元素开始,该元素可以认为已经被排序* 取出下一个元素,在已经排序的元素序列中从后向前扫描 * 如果该元素(已排序)大于新元素,将该元素移到下一位置  * 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置  * 将新元素插入到该位置中  * 重复步骤2  * @param numbers  待排序数组*/  public static void insertSort(int[] numbers) {int size = numbers.length;int temp = 0 ;int j =  0;for(int i = 0 ; i < size ; i++) {temp = numbers[i];//假如temp比前面的值小,则将前面的值后移for(j = i ; j > 0 && temp < numbers[j-1] ; j --) {numbers[j] = numbers[j-1];}numbers[j] = temp;}}
复制代码
  • 将两个有序链表合并成一个链表
public class MyList {/*** 递归方式合并两个单链表** @param head1 有序链表1* @param head2 有序链表2* @return 合并后的链表*/public static Node mergeTwoList(Node head1, Node head2) {//递归结束条件if (head1 == null && head2 == null) {return null;}if (head1 == null) {return head2;}if (head2 == null) {return head1;}//合并后的链表Node head = null;if (head1.data > head2.data) {//把head较小的结点给头结点head = head2;//继续递归head2head.next = mergeTwoList(head1, head2.next);} else {head = head1;head.next = mergeTwoList(head1.next, head2);}return head;}
复制代码
  • 二分法查找
public int search(int[] arr, int key) {int start = 0;int end = arr.length - 1;while (start <= end) {int middle = (start + end) / 2;if (key < arr[middle]) {end = middle - 1;} else if (key > arr[middle]) {start = middle + 1;} else {return middle;}}return -1;}
复制代码
  • 二叉树的深度遍历和广度遍历
class ListNode{ListNode left;ListNode right;int val;public ListNode(int value){this.val=value;}
}
复制代码
//广度遍历
public void levelOrderTraversal(LsitNode node){if(node==null){System.out.print("empty tree"); return;}ArrayDeque<ListNode> deque = new ArrayDeque<ListNode>();deque.add(node);while(!deque.isEmpty()){ListNode rnode = deque.remove();System.out.print(rnode.val+"  ");if(rnode.left!=null){deque.add(rnode.left);}if(rnode.right!=null){deque.add(rnode.right);}}
}
复制代码
//深度遍历
public void depthTraversal(ListNode node){if(node==null){System.out.print("empty tree");return;}Stack<ListNode> stack = new Stack<ListNode>();stack.push(node);while(!stack.isEmpty()){ListNode rnode = stack.pop();System.out.print(rnode.val);if(rnode.right!=null){stack.push(rnode.right);}if(rnode.left!=null){stack.push(rnode.left);}}
}
复制代码
  • java中集合删除元素
//利用for循环删除
for (int i = 0; i < aList.size(); i++) {if ("abc".equals(aList.get(i))) {// 索引回溯aList.remove(i--);}
}
复制代码
//利用迭代器的remove()方法删除
ListIterator<String> listIterator = aList.listIterator();
while(listIterator.hasNext()){String  str = listIterator.next();if ("abc".equals(str)) {//迭代器的remove() 方法删除listIterator.remove(); }
}
复制代码
  • Android 遍历ViewGroup找出某种类型的所有子View
// 遍历viewGroup
public void traverseViewGroup(View view) {if(null == view) {return;}if(view instanceof ViewGroup) {ViewGroup viewGroup = (ViewGroup) view;LinkedList<ViewGroup> linkedList = new LinkedList<>();linkedList.add(viewGroup);while(!linkedList.isEmpty()) {ViewGroup current = linkedList.removeFirst();//dosomethingfor(int i = 0; i < current.getChildCount(); i ++) {if(current.getChildAt(i) instanceof ViewGroup) {linkedList.addLast((ViewGroup) current.getChildAt(i));}else {//dosomething}}}}else {//dosomething}
}
复制代码

面试题总结-算法部分相关推荐

  1. 90 个名企笔试题和算法题

    名企笔试 名企笔试:美团2016招聘笔试(股票交易日) 名企笔试:搜狐2016招聘笔试题(扎金花) 名企笔试:凤凰网2015招聘(二分查找) 名企笔试:4399游戏校招笔试题(快速排序) 名企笔试:蘑 ...

  2. 搬:90 个名企笔试题和算法题

    名企笔试 名企笔试:美团2016招聘笔试(股票交易日) 名企笔试:搜狐2016招聘笔试题(扎金花) 名企笔试:凤凰网2015招聘(二分查找) 名企笔试:4399游戏校招笔试题(快速排序) 名企笔试:蘑 ...

  3. 从一道笔试题谈算法优化(下)

    因为受到经济危机的影响,我在 bokee.com 的博客可能随时出现无法访问的情况:因此将2005年到2006年间在 bokee.com 撰写的博客文章全部迁移到 csdn 博客中来,本文正是其中一篇 ...

  4. 从一道笔试题谈算法优化(上)

    因为受到经济危机的影响,我在 bokee.com 的博客可能随时出现无法访问的情况:因此将2005年到2006年间在 bokee.com 撰写的博客文章全部迁移到 csdn 博客中来,本文正是其中一篇 ...

  5. 九章算法-面试题总结(算法、强化算法、系统设计高清视频观看)

    1 落单的数 题目描述: 有2n+1个数,其中2n个数两两成对,1个数落单,找出这个数.要求O(n)的时间复杂度,O(1)的空间复杂度. 进阶问题:如果有2n+2个数,其中有2个数落单,该怎么办? 分 ...

  6. 机器学习面试题——聚类算法

    机器学习面试题--聚类算法 提示:互联网大厂经常考的传统机器学习算法 文章目录 机器学习面试题--聚类算法 @[TOC](文章目录) 题目 k-means介绍一下,K-means的过程 k-means ...

  7. 高频一线大厂 Python 面试题:算法+爬虫+数据处理+基础

    很多学Python的小伙伴找工作时,只是一家家投简历,一遍遍做笔试,一次次去面试,然后一次次被拒绝--其实并不知道如何系统准备一场面试,每次面试都像撞大运,这样的求职过程,既困难又痛苦. 在本文中,我 ...

  8. zz从一道笔试题谈算法优化(上)

    作者:赖勇浩(http://blog.csdn.net/lanphaday) 引子 每年十一月各大IT公司 都不约而同.争后恐后地到各大高校进行全国巡回招聘.与此同时,网上也开始出现大量笔试面试题:网 ...

  9. 高频一线大厂Python面试题:算法+爬虫+数据处理+基础

    很多学Python的小伙伴找工作时,只是一家家投简历,一遍遍做笔试,一次次去面试,然后一次次被拒绝--其实并不知道如何系统准备一场面试,每次面试都像撞大运,这样的求职过程,既困难又痛苦. 在本文中,我 ...

  10. 2019AndroidBATJ面试题设计模式算法专题总结

    10.给阿里2万多名员工按年龄排序应该选择哪个算法? 11.GC算法(各种算法的优缺点以及应用场景) 12.蚁群算法与蒙特卡洛算法 13.子串包含问题(KMP 算法)写代码实现 14.一个无序,不重复 ...

最新文章

  1. 监听Activity的生命周期的方式。
  2. 《Genesis-3D开源游戏引擎完整实例教程-跑酷游戏篇:简介及目录》(附上完整工程文件)...
  3. AS3 --调用Js
  4. python红楼梦词频统计_用 Python 分析《红楼梦》(2)-阿里云开发者社区
  5. java 自动类型_java类型自动转换
  6. “不差钱”华为刷屏 拟募资60亿!
  7. Veeam FAQ系列转载(四)
  8. 亚马逊发布新版MXNet:支持英伟达Volta和稀疏张量
  9. [译]记一次Kotlin官方文档翻译的PR(内联类)
  10. 本世纪最经典好文---新系统下经典老游戏[中文HGAME]重玩全攻略(感谢作者)
  11. webservice框架
  12. 如何修改input提示文字样式
  13. 物联网芯片型号处理器集锦资料介绍
  14. 通用人工智能:我们还有多远?
  15. 计算机班级学生分析,【本班学生学业成绩状况】_本班学生情况分析报告
  16. 快速串联 RNN / LSTM / Attention / transformer / BERT / GPT
  17. php上传文件和下载文件,PHP 如何上传文件和下载
  18. (二)对图像进行预处理(灰度化,二值化)
  19. 生物信息-related
  20. c语言 10 9-8 7-6… 1循环语句,C语言学习与总结---第五章:循环结构程序设计

热门文章

  1. 移动中”的HTML5-开源图表库ichartjs-王鹤
  2. 利用List比较数组有优势吗?
  3. 重新整理Cellset转Datatable
  4. 最长回文子串--马拉车(?)
  5. 并查集-----好忧伤的并查集
  6. 原创数据结构算法Flash动画演示课件-Action Script(AS)脚本实现
  7. jquery mobile的a标签点击无法跳转的问题
  8. POJ_2001_Shortest Prefixes
  9. 肢解“文件夹图标”病毒,制作专杀工具——“郑大扫帚”
  10. 关于meta的一些知识