面试中可能遇到的算法题
时间:2019-12-14
本文章向大家介绍面试中可能遇到的算法题,主要包括面试中可能遇到的算法题使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1、如何找出单链表中的倒数第K个元素
两个指针,一个指针比另一个指针先移动k-1个元素,然后同时开始继续网下面移动,先移动的next==null的时候,这个时候第二个指针指向的就是倒数第k个元素
2、如何从链表中删除重复数据
private static List<Integer> getRemoveRepeat(List<Integer> ids) { Map<Integer, Object> map = new HashMap<>(); Iterator iterator = ids.iterator(); while (iterator.hasNext()) { Integer key = Integer.valueOf(iterator.next().toString()); if (map.get(key) != null) { iterator.remove(); } else { map.put(key, new Object()); } } return ids; }
使用map保存数据,map的get操作是一个o(1)的操作,所以会很快,但是空间复杂度会增高
3、如何找出单链表中的倒数第k个元素 (两个指针法)
public class LastKNodeFindTest { public static void main(String[] args) { Node last = new Node(1, null); Node last_1 = new Node(2, last); Node last_2 = new Node(3, last_1); Node last_3 = new Node(4, last_2); Node last_4 = new Node(5, last_3); Node last_5 = new Node(6, last_4); Node last_6 = new Node(7, last_5); Node findNode = findKNode(last_6, 6); System.out.println(findNode); } private static Node findKNode(Node first, int k) { int begin = 0; Node knode = first; Node knode1 = first; while (knode.next != null) { if (begin >= k - 1) { knode1 = knode1.next; } knode = knode.next; begin++; } return knode1; } static class Node { private int i; private Node next; public Node(int i, Node next) { this.i = i; this.next = next; } public int getI() { return i; } public void setI(int i) { this.i = i; } public Node getNext() { return next; } public void setNext(Node next) { this.next = next; } } }
如何实现链表的反转
倒序输出链表
private static void revise(Node first){ if(first != null){ revise(first.next); System.out.println(first.i); } }
原文地址:https://www.cnblogs.com/zhangchiblog/p/12040484.html
- 一个隐马尔科夫模型的应用实例:中文分词
- 使用MyBatis轻松实现递归查询与存储过程调用
- Config Server——使用Spring Cloud Bus自动刷新配置
- Config Server——配置内容的加密与解密 详解
- 使用 HTML5 WebSocket 构建实时 Web 应用
- Mysql group by实现方式(一) - 临时表
- TensorFlow 入门
- Python 爬虫 1 快速入门
- Exim Off-by-one(CVE-2018-6789)漏洞复现分析
- 一文学会用 Tensorflow 搭建神经网络
- 数据降维处理:PCA之特征值分解法例子解析
- 理解Eureka的自我保护模式
- 如何使用Feign构造多参数的请求
- 最简日志打印规范
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android Studio实现简单计算器APP
- 基于PHP实现微信小程序客服消息功能
- python gstreamer实现视频快进/快退/循环播放功能
- php tpl模板引擎定义与使用示例
- ThinkPHP5&5.1框架关联模型分页操作示例
- Android实现简易计算器(可以实现连续计算)
- PHP实现提高SESSION响应速度的几种方法详解
- ThinkPHP5.1框架数据库链接和增删改查操作示例
- 新版Flutter集成到已有Android项目的实现
- PHP基于session.upload_progress 实现文件上传进度显示功能详解
- Android实现加法计算器
- Android使用Realm数据库实现App中的收藏功能(代码详解)
- Android实现简单加法计算器
- Android实现两个数相加功能
- 基于Android studio3.6的JNI教程之ncnn之语义分割ENet