剑指offer40】的更多相关文章

136. Single Number 除了一个数字,其他数字都出现了两遍. 用亦或解决,亦或的特点:1.相同的数结果为0,不同的数结果为1 2.与自己亦或为0,与0亦或为原来的数 class Solution { public: int singleNumber(vector<int>& nums) { if(nums.empty()) ; ; ;i < nums.size();i++) res ^= nums[i]; return res; } }; 137. Single N…
/************************************************************************* > File Name: 40_ContinuesSequenceWithSum.c > Author: Juntaran > Mail: JuntaranMail@gmail.com > Created Time: 2016年09月04日 星期日 15时52分42秒 *********************************…
时间限制:1秒 空间限制:32768K 热度指数:276854 本题知识点: 字符串 题目描述 牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上.同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思.例如,“student. a am I”.后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”.Cat对一一的翻转这些单词顺序可不在行,你能帮助他么? class Solution { pu…
class Solution { public: void FindNumsAppearOnce(vector<int> data,int* num1,int *num2) { ) return; ; ;i < data.size();i++){ resultOR ^= data[i]; } int resultIndex = FindFirst1(resultOR); *num1 = ; *num2 = ; ;i < data.size();i++){ if(Is1(data[i…
题目: 一个整型数组里除了两个数字之外,其他的数字都出现了两次.请写程序找出这两个只出现一次的数字. 分析: 我们知道,两个相同的数字异或的结果等于0,所以利用这个性质将数组中所有的数字异或,求得的结果,就是两个只出现一次数字异或的结果.而且这两个数字异或的结果肯定不为0,或者说结果数字二进制表示一定有一位为1,我们以第一个为1的位置作为区分数组中数字的条件,这样便能将两个数字分到两个数组中,再分别异或每一个数组中的数字,最后的结果便是这两个只出现了一次的数字. 程序: C++ class So…
1 题目描述 一个整型数组里除了两个数字之外,其他的数字都出现了两次.请写程序找出这两个只出现一次的数字. 2 思路和方法 (1)异或:除了有两个数字只出现了一次,其他数字都出现了两次.异或运算中,任何一个数字和自己本身异或都是0,任何一个数字和0异或都是本身. (2)哈希表.unordered_map<int, int> map; for(int i = 0; i < data.size(); i++) map[data[i]]++;if(map[data[i]]== 1) v.pus…
说来惭愧,自己在毕业之前就该好好看看<剑指Offer>这本书的,但是各种原因就是没看,也因此错过了很多机会,后悔莫及.但是后悔是没用的,现在趁还有余力,把这本书好好看一遍,并通过C#通通实现一遍,并记录在我的博客中,作为学习笔记. 一.题目:实现Singleton模式 题目:设计一个类,我们只能生成该类的一个实例. 只能生成一个实例的类是实现了Singleton(单例)模式的类型.由于设计模式在面向对象程序设计中起着举足轻重的作用,在面试过程中很多公司都喜欢问一些与设计模式相关的问题.在常用的…
PS:这是一道出境率极高的题目,记得去年参加校园招聘时我看到了3次,但是每次写的都不完善. 一.题目:链表的倒数第k个节点 题目:输入一个链表,输出该链表中倒数第k个结点.为了符合大多数人的习惯,本题从1开始计数,即链表的尾结点是倒数第1个结点.例如一个链表有6个结点,从头结点开始它们的值依次是1.2.3.4.5.6.这个链表的倒数第3个结点是值为4的结点. 链表的节点定义如下,这里使用的是C#来定义: public class Node { public int Data { get; set…
面试题12:打印1到最大的n位数 剑指offer题目12,题目如下 输入数字n,按顺序打印出1到最大的n位十进制数,比如输入3,则打印出1,2,3一直到最大的三位数999 方法一 和面试题11<数值的整数次方>类似,乍看觉得都是简单题目,找出最大的n位数,开始逐个打印,写出代码 public static void method_1(int n ) { int num = 1; int i = 1; while(i <= n) { num *= 10 i++; } for(i = 1;i…
面试题11: 数值的整数次方 剑指offer面试题11,题目如下 实现函数double power(double base,int exponent),求base的exponent次方, 不得使用库 函数,同时不需要考虑大数问题 看起来这道题是一道很简单的题目,不需要什么算法思想,<剑指offer>书中循序渐进讲解了3种方 法,指出可能会出现的问题 方法一 直接使用for循环解决问题 public static double power_method_1(double base,int exp…