
剑指offer
zhourunan123
这个作者很懒,什么都没留下…
展开
-
剑指offer--不用加减乘除做加法
题目描述:写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。不能使用四则运算,考虑用位运算,位运算针对的是二进制。|或 ^异或 &与异或运算:同为0,异为1:0+0=0;1+1=0;1+0=1;0+1=1位与运算:相同位的两个数字都为1,则为1;若有一个不为1,则为0以5+17=22为例:第一种情况:十进制做加法1)只做各位相加,不进位: ...原创 2018-03-31 22:49:06 · 103 阅读 · 0 评论 -
最大子数组之和
一个整数数组中的元素有正有负,在该数组中找出一 个连续子数组,要求该连续子数组中各元素的和最大,这个连续子数组便被称作最大连续子数组。比如数组{2,4,-7,5,2,-1,2,-4,3}的最大连续子数组为{5,2,-1,2},最大连续子数组的和为5+2-1+2=8。问题输入就是一个数组,输出该数组的“连续子数组的最大和”方法一:枚举法枚举所有的子数组并求出他们的和,长度为n的数组,有n(n...原创 2018-08-31 19:30:37 · 498 阅读 · 0 评论 -
剑指offer----和为s的两个数字
输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。方法一:暴力解法:双重遍历class Solution {//暴力解决:双重遍历public: vector<int> FindNumbersWithSum(vector<int> array,int sum) { //...原创 2018-06-20 17:40:11 · 167 阅读 · 0 评论 -
剑指offer----翻转单词序列
牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?class Solution {/...原创 2018-06-20 15:52:52 · 198 阅读 · 0 评论 -
剑指offer----左旋转字符串
汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!class Solution {//步骤1:以n为界,将字符串分为两个子串//步骤2:对两个子串分别进行翻...原创 2018-06-20 15:46:14 · 207 阅读 · 0 评论 -
剑指offer----滑动窗口的最大值
给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,5,1}, ...原创 2018-06-20 00:25:21 · 160 阅读 · 0 评论 -
剑指offer----数字在排序数组中出现的次数
统计一个数字在排序数组中出现的次数。class Solution {//数组有序-----> 借助二分查找法//找到第一个key 与 最后一个key//利用两者下标的差+1 即求得key出现的次数public: int GetNumberOfK(vector<int> data ,int k) { int len = data.size(); ...原创 2018-06-20 23:32:59 · 206 阅读 · 0 评论 -
剑指offer----和为S的连续正数序列
小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!输出描述:输出所有和为S的连续正数序列。序列内按照从小至...原创 2018-06-20 22:24:04 · 193 阅读 · 0 评论 -
剑指offer----链表(二):反转链表
题目描述:输入一个链表,反转链表后,输出链表的所有元素。思路:定义3个指针,分别指向当前遍历到的结点、它的前一个结点及后一个结点。测试用例分析:输入的链表头指针是nullptr,输入的链表只有一个结点,输入的链表有多个结点。代码:Python版:# -*- coding:utf-8 -*-# class ListNode:# def __init__(self, x):# ...原创 2018-05-02 23:08:46 · 151 阅读 · 0 评论 -
剑指offer----链表(一):从尾到头打印链表
题目描述:输入一个链表,从尾到头打印链表每个节点的值。思路:假设不修改原链表的结构。返回一个反序的链表,这就是典型的“后进先出”,我们可以用栈实现这种顺序。每经过一个结点的时候,把该结点放到一个栈中。当遍历完整个链表后,再从栈顶开始逐个输出结点的值,给一个新的链表结构,这样链表就实现了反转。代码:Python版:# -*- coding:utf-8 -*-# class ListNode:# ...原创 2018-05-02 22:38:52 · 143 阅读 · 0 评论 -
二分查找总结
1.二分查找又称折半查找2.优点:比较次数少;查找速度快;平均性能好3.缺点:待查表为有序数组(若为无序数组,分成两份查找无意义,排序本身也耗费时间);插入删除困难(增删需要移动大量的节点)4.思想:在一个有序数组中,取数组的中间值与要查找的数进行比较;若要查找的数等于中间值,查找成功;若要查找的数大于中间值,则在右半区间继续取中间值与要查找的数进行比较;若要查找的数小...原创 2018-09-02 00:47:59 · 4454 阅读 · 0 评论