摘要: 题目描述 写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。 常规解法:位运算 首先看十进制是如何做的: 5+7=12,三步走 第一步:相加各位的值,不算进位,得到2。 第二步:计算进位值,得到10. 如果这一步的进位值为0,那么第一步得到的值就是最终结果。 第三步:重复 阅读全文
posted @ 2019-07-24 20:08 浅滩浅 阅读(129) 评论(0) 推荐(0)
摘要: 题目描述 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。 在一个长度为n的数组里 阅读全文
posted @ 2019-07-24 19:52 浅滩浅 阅读(118) 评论(0) 推荐(0)
摘要: 题目描述 牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a 阅读全文
posted @ 2019-07-24 19:32 浅滩浅 阅读(188) 评论(0) 推荐(0)
摘要: 题目描述 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它! 阅读全文
posted @ 2019-07-24 18:50 浅滩浅 阅读(103) 评论(0) 推荐(0)
摘要: 题目描述 输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 输出描述: 对应每个测试案例,输出两个数,小的先输出。解题:双重循环c++代码如下: class Solution { public: vector<int> 阅读全文
posted @ 2019-07-24 18:28 浅滩浅 阅读(169) 评论(0) 推荐(0)
摘要: 题目描述 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。 解题:数组快排之后扫描一遍就出结果了。 时间复杂度:n+nlogn c++代码如下: class Solution { public: void FindNumsAppearOnce(vector 阅读全文
posted @ 2019-07-24 18:16 浅滩浅 阅读(120) 评论(0) 推荐(0)
摘要: 题目描述 求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数(从1 到 阅读全文
posted @ 2019-07-24 13:41 浅滩浅 阅读(125) 评论(0) 推荐(0)
摘要: 题目描述 在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写). 类似桶排序的思路: 注意:在java中String的长度不能用str.size(),而只有str.length(); public cla 阅读全文
posted @ 2019-07-24 13:21 浅滩浅 阅读(72) 评论(0) 推荐(0)
摘要: 题目描述 HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1 阅读全文
posted @ 2019-07-24 12:27 浅滩浅 阅读(131) 评论(0) 推荐(0)
摘要: 题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。 类似于桶排序的思路: 弊端:数组中的值不能过大,否则必须开辟很大的空间(或者得 阅读全文
posted @ 2019-07-24 12:08 浅滩浅 阅读(218) 评论(0) 推荐(0)
摘要: 题目描述 此题和最大乘积有着相似的解法:https://www.cnblogs.com/cstdio1/p/11041901.html class Solution { public: vector<int> GetLeastNumbers_Solution(vector<int> arr, int 阅读全文
posted @ 2019-07-24 11:56 浅滩浅 阅读(148) 评论(0) 推荐(0)
摘要: 题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。 思路:用到两个栈:一个栈1全部压,一个栈2压入一个元素后,之后压的元素只能比之前的小于或者等于,这样一来最小的就是在栈2的栈顶,出栈的时候只有当栈1的栈顶元素和栈2的栈顶元素相同时,此时 阅读全文
posted @ 2019-07-24 11:46 浅滩浅 阅读(121) 评论(0) 推荐(0)
摘要: 题目描述 输入一个链表,反转链表后,输出新链表的表头。 注意:这个链表有效值是从head开始而不是head->next开始的 下面的代码没有动指针只是改值了,不是很推荐,但是通过了测试,有时间再写动指针的方法吧 c++代码如下: /* struct ListNode { int val; struc 阅读全文
posted @ 2019-07-24 11:06 浅滩浅 阅读(132) 评论(0) 推荐(0)
摘要: 注意:这个链表的值是从hesd->next开始的 阅读全文
posted @ 2019-07-24 10:55 浅滩浅 阅读(184) 评论(0) 推荐(0)
摘要: 题目描述 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。 注意:head中也有值,不是从head->next开始才有值的。 此题比那个没有让你在原链表上进行逆序,只是让你返回一个逆序的值序列而已 c++代码如下: /** * struct ListNode { * int val; 阅读全文
posted @ 2019-07-24 10:45 浅滩浅 阅读(136) 评论(0) 推荐(0)
摘要: 本质是:等差数列求和公式 sn=n*(a1+an)/2;(本题中sn=n*(1+n)/2) 因为不能用到乘法,先展开进行变形sn=(n+n*n)/2 >sn=(n+n^2)/2; 除2可以用右移一位实现 乘法可以用pow实现 public class Solution { public int Su 阅读全文
posted @ 2019-07-24 10:17 浅滩浅 阅读(748) 评论(0) 推荐(0)
摘要: 题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10. 这道题和2018b 阅读全文
posted @ 2019-07-24 09:30 浅滩浅 阅读(313) 评论(0) 推荐(0)