
剑指offer编程
dancheren
这个作者很懒,什么都没留下…
展开
-
剑指offer编程
二维数组中的查找题目描述:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。代码: /** * 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。 * 请完成一个函数,输入这样的一个二维数组和原创 2016-08-10 19:27:21 · 342 阅读 · 0 评论 -
替换空格
题目描述:请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。代码如下: public class Solution { public String replaceSpace(StringBuffer str) {原创 2016-08-12 14:05:55 · 265 阅读 · 0 评论 -
剑指Offer题目总结(java版)
面试题 2 :实现单例模式 1. 饿汉式单例类 public class SingletonClass { private static final SingletonClass instance=new SingletonClass(); //私有构造函数 private SingletonClass() {} public static S转载 2017-03-22 15:30:47 · 904 阅读 · 0 评论 -
剑指offer---对称的二叉树
题目描述请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。思路:此题需要我们判断一棵树是否是对称树,对称是相对于根结点来说的,要求处于同一层的左右结点必须对应相等,即左结点必须等于关于根结点对称位置的右结点相等。因此我们可以定义一个函数,传入两个根结点,相当于传入一棵二叉树(原始)跟二叉树的拷贝(复制),原始二原创 2016-12-02 20:41:45 · 543 阅读 · 0 评论 -
51:数组中重复的数字
题目描述在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是重复的数字2或者3。思路:此题有三种方法来解。第一种是常规思路,即将数组进行排序,然后再遍历数组找出重复的数字,时间复杂度原创 2017-05-04 20:13:15 · 618 阅读 · 0 评论 -
52:构建乘积数组
题目描述:给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。不能使用除法。思路: 此题可以根据B的表达式将其分割成两部分,即 B[i] = C[i] * D[i],其中C[i] = A[0]*A[1]*...*A[i-1],D[i]原创 2017-05-04 21:03:35 · 273 阅读 · 0 评论 -
从1到n整数中1出现的次数:O(logn)算法
1. 题目描述输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数。例如输入12,从1到12这些整数中包含1的数字有1,10,11和12,1一共出现了5次。2. 题目来源第一次看到是在《剑指Offer》第2版上,面试题32。leetcode和牛客网上都有这道题。3. 本文的目的看了《剑指Offer》上的解法,我觉得不能算好:这段解释描述有些转载 2017-06-22 16:39:04 · 537 阅读 · 0 评论 -
O(1)时间内删除链表结点
需求:给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点。思路:把下一结点的内容复制到需要删除的结点,删除下一结点,相当于删除当前结点。 当我们想删除一个结点时,并不一定要删除这个结点本身。可以先把下一个结点的内容复制出来覆盖被删除结点的内容,然后把下一个结点删除。如果待删除节点是头结点,删除头结点,并将待删除节点赋予null值;如果待删除节点是链表的尾节点,则需原创 2017-08-18 11:46:53 · 349 阅读 · 0 评论