July 西电讲座 2014.09 第一部分、面试 –笔试面试考什么 –解决笔试面试题的常用算法 –常用算法的时间复杂度 –O(N)时间复杂度内能解决的问题 第二部分、算法 –如何学习算法 循序渐进(KMP) 相互串联(以Trie树、后缀树,贪心、动态规划为例) 追本溯源(二叉树、红黑树、2-3-4树、B树为例) –海量数据处理面试题 十种解决之道
原创
2015-02-17 22:57:35
490阅读
1、不用中间变量,变换A和B的值// 1.中间变量
void swap(int a, int b) {
int temp = a;
a = b;
b = temp;
}
// 2.加法
void swap(int a, int b) {
a = a + b;
b = a - b;
a = a - b;
}
// 3.异或(相同为0,不同为1. 可以理解为不进
转载
2023-08-20 21:08:15
86阅读
顾明思义,是气泡从液体的底部到顶部的过程,就像串糖葫芦一样,先决定最下面的数据。在算法的过程中是把一组数据从第一位开始两两比较(第1位和第2位,第2位和第3位...),选择大的值或者比较小的值交换到后面的位置。以这种方式比较第一轮后,这组数据中最大的值或者最小的就沉淀到最下面,以此类推倒数第二、三位等。选择:选择排序的方式,其实更加贴近我们正常的思考方式,就是从一组的数据的开始位置,拿出这个数据,
转载
2023-11-03 12:32:33
4阅读
算法题排序算法选择排序 每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。选择排序是不稳定的排序方法。插入排序 插入排序法,插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。希尔排序 希尔排序(Shell Sort)是插入排序的一种。是针对直接插入排序算法的改进。该方法又称缩小增量排序,因DL.Shell于1959年提出而得名。先取一个小于n的整数d1作为第一个增量,把文件的全部记录分成d1个组。所有距离为d1的倍数的记录放在同
转载
2013-07-22 19:01:00
230阅读
2评论
Android面试算法
## 前言
在Android开发岗位中,算法是一个非常重要的技能。无论是在面试过程中还是在实际工作中,我们都可能会遇到一些需要用算法解决的问题。因此,熟练掌握常见的算法题目对于Android开发人员来说是非常有必要的。
本文将介绍一些常见的面试算法题目,并提供相应的代码示例。我们将从简单的题目开始,逐渐深入到一些更复杂的问题。
## 算法1:数组求和
题目:给定一
原创
2023-08-28 11:19:00
46阅读
1. 给一颗多叉树,求 从一个节点出发到其它所有节点的距离之和 的最小值。 树形 dp。一般两遍 dfs 就能解决。 第一遍 dfs 用 son[i] 记录每个节点多少个子孙,用 dis[i] 记录 i 点到其所有子孙的距离之和。 son[i]和 dis[i]都在回溯的过程进行维护。假设 v 是 u
原创
2021-07-22 14:00:38
173阅读
1.只出现一次的数字 使用异或运算符,相同数字异或得0,将所有数字异或到一起,最后只剩下一个数字,就是只出现一次的数字。异或运算具有交换律(a^b^c=a^c^b) 2.多数元素 向上取整:比自己大的最小整数,用数学符号⌊⌋表示;向下取整:比自己小的最大整数,用数学符号⌈⌉表示; eg:a=4.9, ...
转载
2021-10-01 20:38:00
202阅读
2评论
在苹果的 iOS 开发环境中,面试算法问题,尤其是排列组合类型的算法,往往是必不可少的一部分。这些算法不仅考察算法的设计能力,还涉及到对数学逻辑的深入理解。在这篇博文中,我将详解排列组合问题的解决过程,从技术原理的介绍到架构解析,再到源码分析,最后探讨其应用场景和展望未来的可能性。
## 背景描述
在开发过程中,常常会遇到需要组合、排列元素的情况。这类问题通常出现在如下种种场景中:
1. 用
对于Java系学生而言,Java虚拟机中的垃圾收集算法是一个很重要的面试考点。 常用的垃圾收集算法主要可划分为以下三类: 1. 标记-清除算法 标记清除算法是一种比较简单的方法,直接标记内存中待回收的对象,然后直接清除。但是存在的一个问题是效率过低,标记和清除的过程耗时过高;第二个问题是空间问题,存在较多的内存碎片,导致相应的内存使用率过低。 2. 复制算法 为解决效率问题,复制算法将内存
转载
2024-05-28 22:48:19
30阅读
面试算法题4
据说是华为笔试题,练习了一下。
package src;/* * 第二题: 假设有个int型的数n,实现高低位的互换,比如12345,给换成54321,写一个方法实现n的高低位的互换。(n是几不知道) */import java.io.*;import java.util.regex.Matcher;import java.util.regex.Pattern;public cla
转载
2007-04-12 19:27:00
164阅读
2评论
od4 { public static int nchild=17;
原创
2007-04-12 19:24:00
42阅读
面试算法题1在论坛看到有人提问,由于没有保存帖子路径,到处找了一下,没找到。干脆就放到blog上。/*
* 有一个整数n,写一个函数f(n),返回0到n之间出现的"1"的个数。
* 比如f(13)=6,现在f(1)=1,问下一个最大的f(n)=n的n是什么?
* writed by chszs
*/
package myApp;
import java.io.BufferedReader;
原创
2007-03-08 21:10:00
64阅读
# Java面试算法代码解析
## 引言
在Java开发领域,算法是面试中常被问及的话题。掌握常见的算法和数据结构,对于应聘者来说是非常重要的。本文将介绍一些常见的算法问题,并提供相应的Java代码示例。
## 1. 二分查找
二分查找是一种高效的查找算法,它可以在有序数组中快速定位目标元素。下面是一个二分查找的示例代码:
```java
public int binarySearch(
原创
2024-01-03 03:22:57
38阅读
原创
2023-03-21 16:53:11
44阅读
面试算法题2package myfile;
/**
* 请用Java语言写一个函数printArray(int[][] aData),该函数将一个二维数组以顺时针螺旋的方式打印出来。
* 例如,对数组:
* 1 2 3 4 5
* 14 15 16 17 6
* 13 20 19 18 7
* 12 11 10 9 8
*
* 打印出来的序列应该是:1,2,3,4,5,6,7,8
原创
2007-03-21 19:11:00
92阅读
# Java面试算法上机:基本数据结构与算法
在参加Java面试时,除了扎实的编程能力外,算法与数据结构的基础也是面试官重点考察的内容。本篇文章将为你介绍一些常见的算法和数据结构,通过代码示例和序列图来简化复杂的概念,让你在面试时能自信应对相关问题。
## 基本数据结构
### 数组
数组是最基础的数据结构之一,允许我们存储多个相同类型的元素。在Java中,数组的大小是固定的,一旦创建就无
前言很多Java程序员一直希望找到一份完整的学习路径,但是市面上很多书都是专注某一个领域的,没有一份完整的大图,以至于很多程序员很迷茫,不知道自己到底应该从哪里开始学,或者不知道自己学习些什么。好在,很早之前就有一位阿里巴巴的技术专家总结了一份**《Java工程师成神之路》**,作者按照自己的经验总结了从基础,到高级、底层、架构、进阶、扩展等6个大的章节。几乎囊括了Java体系内的所有知识点。这份
面试算法题6
做这些题只是为了爱好,收集供所有找工作的学生和爱好者共享。
package mymethod;/** * 已知一组数字:21,25,11,32,12,35,55,77,66 要求按以下规则进行排序:第一个数最大,第二个数最小, * 第三个数是剩下中的最大的,第四个数是剩下中的最小的,依此类推,请设计一个字符界面的程序解决之. * @author acer */public clas
转载
2007-04-21 09:21:00
119阅读
2评论
面试算法题5
做这些题只是为了爱好,收集供所有找工作的学生和爱好者共享。
package mymethod;import java.util.HashSet;import java.util.Set;/** * 请设计一个字符界面的程序,用来找出1-500以内的完整数,所谓完整数是指其所有因子和(包括1而不包括自身)等于自身 * 的整数,例如28=1+2+4+7+14,1,2,4,7,14都是2
转载
2007-04-21 09:19:00
90阅读
2评论
面试算法题4据说是华为笔试题,练习了一下。package src;
/*
* 第二题: 假设有个int型的数n,实现高低位的互换,比如12345,给换成54321,写一个方法实现n的高低位的互换。(n是几不知道)
*/
import java.io.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
原创
2007-04-12 19:27:00
31阅读