算法
seu_wcx
这个作者很懒,什么都没留下…
展开
-
剑指offer02_替换空格
题目描述:打算暑假找个实习了,所以,赶紧找点java 基础的题目和算法题目来做做,但是,好记性不如烂笔头,过了很久,很多基础的方法已经忘记了,这个真的是不应该啊。请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。分析思路1 : 遍历查找字符串,如果碰到空格,就用%20 替换。pub...原创 2019-04-23 20:07:56 · 51 阅读 · 0 评论 -
20190901PDD第一题
输入示例如下:555503,772867,756893,339138,399447,40662,859037,628085,855723,974471,599631,636153,581541,174761,948135,411485,554033,858627,402833,546467,574367,360461,566480,755523,222921,164287,420256,40...原创 2019-09-01 19:32:53 · 192 阅读 · 0 评论 -
笔试题2019/8/29
自己的思路先,捋一遍,我们得到的数组是排序好的从这个数组中找到最靠近x的k个数,返回结果升序。额外条件,如果两个数值和x差一样,优先选择较小的数字直接贴代码:import java.util.*;public class Main1 { public static int count=0; public static void main(String[] args) {...原创 2019-08-29 21:56:31 · 167 阅读 · 0 评论 -
剑指offer_11数值的整数次方
题目描述:实现函数double Power(double base, int exponent),求base 的exponent次方,不得使用库函数,同时不考虑大数问题我们知道在标准的math 库里面有pow 函数可以来求乘方,本题要实现pow的功能,要求实现特定的功能解法1 :躺解的解法:public static double Pow(double base, int exponen...原创 2019-05-12 22:16:45 · 93 阅读 · 0 评论 -
剑指offer_第三章高质量的代码
代码质量,是指代码的容错处理能力,对一些特别的输入会询问coder是否考虑和如何处理,不能容忍代码只是针对一种假想的‘正常值’进行处理,不考虑异常状况,也不考虑资源回收的问题等等java 中浮点数的比较插:java中浮点数的比较System.out.println(0.1d == 0.1f);这样的结果是false,因为精度的丢失导致结果是不对的那么问题来了,到底为什么不对呢?类型升级...原创 2019-05-12 15:38:45 · 107 阅读 · 0 评论 -
剑指offer_位运算
位运算是把数字用二进制表示以后,对每一位上0 或者1 的运算,二进制机器位运算是现代计算机科学的基础,底层技术都离不开位运算二进制的位运算不是很难掌握,因为位运算总共只有5中运算:与、或、异或、 左移和右移。与 或 和 异或运算的规律我们可以用一个表总结一哈左移运算符m<<n表示把m左移n位。左移n位的时候,最左边的n位将会被丢弃,同时右边补上n个0对应10进制的数来说,左移...原创 2019-05-12 11:17:07 · 126 阅读 · 0 评论 -
剑指offer_递归和循环
递归和循环如果我们需要重复的多次计算相同的问题,通常可以选择递归或者循环两种不同的方法,递归是在一个函数内部调用这个函数自身,而循环则是通过设置计算的初始值以及终止条件,在一个范围内重复运算,比如求1+2+… +n 我们可以用递归或者循环两种方式求出结果,但是递归的代码要少得多,如果可以尽量用递归去做递归的缺点是,递归的时间和空间消耗非常大,每一次函数调用,都需要在内存和栈中分配空间以 保存参...原创 2019-05-06 15:48:05 · 95 阅读 · 0 评论 -
剑指offer_二维有序数组查找
题目描述:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。思路解析:第一种暴力查找,可以用,但是没什么意思,因为这里的二维数组是递增的有序序列,所以我们还是考虑简化(动点脑子)的方法方法2:因为这个数组是一个有规律的数组,从左到右、 从上到下都是递增的一个顺序排序的,可以...原创 2019-04-24 23:08:55 · 81 阅读 · 0 评论 -
剑指offer_不修改数组找出重复的数字
题目描述:在一个长度为n+1的数组里的所有数字都在1~n的范围内,所以数组中至少有一个数字是重复的,请找出数字中任意一个重复的数字,但不修改输入的数组算法分析:我们把1~n 的数字从中剑的数字m 分为两部分,前面一般为1-m,后面一般为m+1-n, 如果1-m的数字的数目超过m,那么这一半的区间里面一定包含重复的数字;否则另一半的m+1-n 的区间里一定包含重复的数字。我们可以继续把包含重复...原创 2019-04-24 22:50:40 · 95 阅读 · 0 评论 -
剑指offer_旋转数组的最小数字
题目: 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为属于组的旋转,输入一个递增排序的数组的一个旋转。输出数组的最小元素,例如{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。...原创 2019-04-29 16:48:40 · 99 阅读 · 0 评论 -
剑指offer_数组中重复的数字
题目描述:找出数组中重复的数字在一个长度为n的数组里的所有数字都在0~n-1的范围内数组中某些数字是重复的,但不知道有几个数字重复了,也不知道,每个数字重复了几次,找出数组中任意一个重复的数字,例如,输入长度为7的数组{2,3,1,0,2,5,3}那么对应的输出是重复的数字2 或者3三个思路:方法1 :把输入的数组排序,然后从排序后的数组中找到重复的数字,只需要遍历查找即可,//...原创 2019-04-24 21:49:56 · 102 阅读 · 0 评论 -
剑指offer_排序和查找
排序和查找是算法考察的通常考点,我们应该重点掌握二分查找,并归排序和快速排序,做到能够手撕代码很多的算法都可以用递归和循环两种方式实现,通常基于递归的方法代码比较简洁,但是性能不如基于循环的方法。我们可以根据题目的特点,讨论合适的方法位运算是一种特殊的算法,它是把数字表示成二进制后对0 和1 的操作,由于位运算的对象为二进制数字,所以不是非常直观,但是掌握的难度不大,因为总共只有与或异或左移右...原创 2019-04-29 15:39:38 · 186 阅读 · 0 评论 -
剑指offer-栈和队列
写在最前:学过,不系统栈和队列,栈是一个非常常见的数据结构,它在计算机领域中被广泛应用,比如操作系统会给每一个线程创建一个栈用来存储函数调用的时候各个函数的参数、返回地址和临时变量等。栈的特点是后进先出,即最后被push 的元素最先被pop,栈是不考虑排序的数据结构,队列是另一种很重要的数据结构,和栈不同的是,队列的特点是先进先出。剑指offer_07 用两个栈实现队列题目1描述用两个栈来...原创 2019-04-28 22:11:13 · 109 阅读 · 0 评论 -
剑指offer_链表浅析和实现
本科学c 的时候学过链表,但是学的非常浅,现在又要重新回顾一下按照惯例:简单介绍一下链表:链表链表面试的时候非常重要的一种数据结构,链表的结构非常简单,是有指针把若干个节点连接成的链状结构,链表的创建,插入,查询使用都非常的渐变,代码量比较小。链表是一种动态的数据结构,他的操作需要对指针进行操作。链表是一种常见的数据结构,是一种线性表,因为链表是一种动态的数据结构,所以,链表不是不固定长...原创 2019-04-28 16:43:25 · 101 阅读 · 0 评论 -
剑指offer_旋转数组的最小数字
题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。public class Solution { public int minNumberInRotateArr...原创 2019-04-23 20:42:53 · 54 阅读 · 0 评论 -
20190901PDD第二题
解题思路,这种类型的题目从特殊到一般的思考会比较简单点:按照参考输入2 2 2 为例,他的输出可能的最大值是1,2当最大值为1的时候可能性p1=1/21/2;最大值为2的时候 p2=1-p1;当参考输入为2 3 4 的时候,他的可能取到的最大值为1,2,3,4取最大值为1的时候p1=1/31/4;最大值为2的时候p2=(2/3)(2/4)-p1;最大值为3的时候p3=(3/3)(3/4...原创 2019-09-01 19:50:29 · 134 阅读 · 0 评论