剑指offer面试题
糊涂糖僧
皮皮赖赖。
展开
-
剑指 Offer 03. 数组中重复的数字()
在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/shu-zu-zhong-zhong-fu-de-shu-zi-lcof著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。...原创 2021-12-02 20:37:10 · 244 阅读 · 0 评论 -
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
题目中说的这个数组使我们所熟知的杨氏矩阵拿到一道题的解题思路应该是这样的:先看这道题中所用到的知识点,然后选用合适的类型和返回类型。接下来用代码进行讲解#include<stdio.h>int find(int array[10][10], int cows, int columns,const int num ){ int row = 0; //定义行数 int c...原创 2018-11-17 10:59:07 · 381 阅读 · 0 评论 -
替换字符串中的空格
剑指offer面试题请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。看到题目后的思路看到这个题目后,我们首相应该想到的是:原来的一个空格字符,经过替换后就成了三个字符,因此字符会变长,那么很有可能会覆盖原来的字符。如果是在一个新创建的字符串上做替换,就可以有足够的空间,显然题目上没有...原创 2018-11-17 17:05:24 · 634 阅读 · 0 评论 -
C/C++求一个整数的二进制中1的个数(用三种效率不同的方法实现)
题目:实现一个函数,输入一个整数,输出该数二进制中1的个数。例如把9表示成二进制是1001,有2位是1,因此如果输入是9,该函数输出2第一种解法(死循环)判断整数二进制表示中最右边的一位是不是1将二进制数右移一位¹直到整个整数变成0为止代码如下:int NumberOf1(int n){ int count = 0; while(n){ ...原创 2018-11-20 12:16:32 · 1942 阅读 · 0 评论 -
c++中求前n项和(这代码不得不让我佩服)
今天在牛客网上刷题,遇到了这道题,最后我看到一位大佬的代码让我感觉的还差很多!!!题目求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。对于求前N 项和这种题我们在中学时代就已经很熟悉了,公式有很多,像这种递增的在数学中套公式就好:Sn = n x(n-1)/ 2 就完事了,在C++中用一个循环就可以解决...原创 2018-11-28 22:20:07 · 5431 阅读 · 0 评论 -
不用加减乘除算加法
题目写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。思路(一)首先看我们平时的十进制是如何做的: 6+5 ,三步曲!!!相加各位的值,不算进位,得到1。开始计算进位值,这一步得到得进位值为1,如果这一步的进位值为10,那么第一步得到的值就是最终结果。重复上述两步,只是相加的值变成上述两步的得到的结果2和10,得到12。(二)我们可以用三步曲的方式计...原创 2018-12-03 16:59:52 · 262 阅读 · 0 评论 -
把数组排列成最小的数(详解)
题目:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。题目解析:看到这道题最直接的方法是先求出这个数组中所有数字的全排列,然后将每一种去安排列拼接,然后从拼接中找出最小的数,但是这样的效率明显较低,那么有咩有高效的方法呢?当然有,就是定义一个排序的规则。要定义一个排...原创 2019-06-06 10:03:53 · 3876 阅读 · 3 评论