![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
编程题
csdn_lzw
这个人很菜什么也没写
展开
-
拼多多笔试题之最大乘积
链接:https://www.nowcoder.com/questionTerminal/5f29c72b1ae14d92b9c3fa03a037ac5f 给定一个无序数组,包含正数、负数和0,要求从中找出3个数的乘积,使得乘积最大,要求时间复杂度:O(n),空间复杂度:O(1) 输入描述:无序整数数组A[n]输出描述:满足条件的最大乘积 思路 : 两个负数与一个最大正数相乘...原创 2018-03-18 16:26:26 · 695 阅读 · 1 评论 -
剑指offer- 翻转单词顺序列
题目描述 牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?思路翻转句子...原创 2018-04-25 11:54:59 · 135 阅读 · 0 评论 -
剑指offer- 不用加减乘除做加法
题目描述 写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。思路两个数异或:相当于每一位相加,而不考虑进位;两个数相与,并左移一位:相当于求得进位; 重复上述两步,直到进位值为0先看十进制是如何做的: 5+7=12, 第一步:相加各位的值,不算进位,得到2。 第二步:计算进位值,得到10. 如果这一步的进位值为0,那么第一步得到的值就是最...原创 2018-04-25 20:46:17 · 80 阅读 · 0 评论 -
剑指offer-把字符串转换成整数
题目描述 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0 输入描述:输入一个字符串,包括数字字母符号,可以为空输出描述:如果是合法的数值表达则返回该数字,否则返回0示例1 输入+2147483647 1a33输出2147483647 0思路先判断第一位是不是+-号还是数...原创 2018-04-25 21:23:37 · 155 阅读 · 1 评论 -
剑指offer-构建乘积数组
题目描述 给定一个数组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[i]的值可以看作下图的矩阵中每行的乘积。 下三角用连乘可以很容求得,上三角,从下向上也是连乘。 因此我们的思路就很清晰了,先算下三角中的连乘,即我们先算出B[i]中的一部分,然后倒过来...原创 2018-04-25 22:22:35 · 90 阅读 · 0 评论 -
剑指offer-二叉搜索树的第k个结点
题目描述 给定一颗二叉搜索树,请找出其中的第k大的结点。 例如, 5 / \ 3 7 /\ /\ 2 4 6 8 中,按结点数值大小顺序第三个结点的值为4。递归版/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) :...原创 2018-04-26 15:22:03 · 88 阅读 · 0 评论 -
剑指offer-从上往下打印二叉树
题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印。思路:BFS用队列class Solution {public:vector<int> PrintFromTopToBottom(TreeNode* root) { queue<TreeNode*> q; vector<int> v; if(root=...原创 2018-04-26 16:07:51 · 99 阅读 · 0 评论 -
剑指offer-二叉树的镜像
题目描述 操作给定的二叉树,将其变换为源二叉树的镜像。 输入描述:二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10...原创 2018-04-26 16:12:16 · 80 阅读 · 0 评论 -
剑指offer-二叉树的深度
题目描述 输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。class Solution {public:int TreeDepth(TreeNode* root){ if(root==nullptr)return 0; int leftD = TreeDepth(root->left);...原创 2018-04-26 16:22:15 · 90 阅读 · 0 评论 -
剑指offer- 把二叉树打印成多行
题目描述 从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。层次打印二叉树vector<int> PrintFromTopToBottom(TreeNode* root) { queue<TreeNode*> q; vector<int> v; if(root==nullptr)return v; q.p...原创 2018-04-26 19:14:36 · 89 阅读 · 0 评论 -
剑指offer- 之字形打印二叉树
题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。方法一、层次打印,偶数行反转、 vector<vector<int>> Print(TreeNode* root) { queue<TreeNode*> q; vector<v...原创 2018-04-26 20:21:45 · 174 阅读 · 0 评论 -
剑指offer- 对称的二叉树
题目描述 请实现一个函数,用来判断一颗二叉树是不是对称的。 注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。思路:如果先序遍历的顺序分为两种先左后右和先右后左两种顺序遍历,如果两者相等说明二叉树是对称的二叉树class Solution {public:bool issame(TreeNode* node1, TreeNode* node2){ if(nod...原创 2018-04-26 22:40:02 · 126 阅读 · 0 评论 -
函数求零点(二分法,牛顿法)
二分找两个值:l(low)与h(high)。使得f(l)<0且f(h)>0。 函数连续性,x0在l与h之间。 设m=l+h2 ,判断f(m)的正负性: f(m)>0⇔x0在l与m之间 f(m)=0⇔x0=m f(m)<0⇔x0在m与h之间牛顿法迭代公式 #include<bits/stdc++.h>using namespac...原创 2018-05-05 12:09:52 · 7484 阅读 · 1 评论 -
剑指offer Python2版
1. 二维数组中的查找在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。# -*- coding:utf-8 -*-class Solution: # array 二维列表 def Find(self, target, array):...原创 2018-09-19 12:34:31 · 3684 阅读 · 0 评论 -
剑指offer-左旋转字符串
题目描述 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!方法一、用string开了额外的空间 string sclass Solution {...原创 2018-04-25 11:02:10 · 76 阅读 · 0 评论 -
剑指offer-和为S的连续正数序列
题目描述 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck! 输出描述:输出所有和为S的连续正数序...原创 2018-04-24 22:37:14 · 104 阅读 · 0 评论 -
剑指offer-和为S的两个数字
题目描述 输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 输出描述:对应每个测试案例,输出两个数,小的先输出。 PS:抛物线开口向下,找到的第一组(相差最大的)就是乘积最小的,不需要比较思路一、哈希class Solution {public:vector<int> FindNu...原创 2018-04-24 21:36:41 · 124 阅读 · 0 评论 -
拼多多笔试题之分配巧克力
链接:https://www.nowcoder.com/questionTerminal/d2dfc62bf1ba42679a0e358c57da9828 六一儿童节,老师带了很多好吃的巧克力到幼儿园。每块巧克力j的重量为w[j],对于每个小朋友i,当他分到的巧克力大小达到h[i] (即w[j]>=h[i]),他才会上去表演节目。老师的目标是将巧克力分发给孩子们,使得最多的小孩上台表演。可...原创 2018-03-18 17:21:10 · 1465 阅读 · 0 评论 -
动态规划
https://www.nowcoder.com/practice/72a99e28381a407991f2c96d8cb238ab?tpId=49&tqId=29305&tPage=2&rp=2&ru=/ta/2016test&qru=/ta/2016test/question-ranking在一个6*6的棋盘上进行,上面放着36个价值不等的礼物,每个...原创 2018-04-04 21:15:38 · 104 阅读 · 0 评论 -
剑指offer-栈
面试题9:用两个栈实现队列 用两个队列实现栈思路一:通用朴素型 画图 1.栈实现队列 把栈A当成主栈,栈B用于辅助。 入队: 将元素进栈A 出队: 先进先出,最先进来的,被压在最底下(栈底),因此把上面的元素挪开,放入栈B,直到栈A剩一个元素,pop它,最后再把元素挪回栈A。 2.队列实现栈 把队列A当成主队列,队列B用于辅助。 入栈: 将元素进队A 出栈: 后进先出,最后进...原创 2018-04-04 22:33:54 · 136 阅读 · 0 评论 -
模拟整数加法
https://www.nowcoder.com/practice/850fde3d987f4b678171abd88cf05710?tpId=85&tqId=29885&tPage=3&rp=3&ru=/ta/2017test&qru=/ta/2017test/question-ranking#include <bits/stdc++.h>...原创 2018-04-05 15:24:48 · 156 阅读 · 0 评论 -
剑指offer-链表
面试题18:删除链表中重复的节点在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 思路1:递归版class Solution {public: ListNode* deleteDuplication(ListNode* pHead) { if(pHead==nullptr||pHead->next...原创 2018-04-19 09:09:12 · 118 阅读 · 0 评论 -
剑指offer-数组中出现次数超过一半的数字
方法一、用快排的Partition函数数组中有一个数字出现的次数超过了数组长度的一半。如果我把这个数组排序,那么排序之后位于数组中间的数字一定就是那个出现次数超过数组一半的数字。也就是说,这个数字就是统计学上的中位数,即长度为n的数组中第n/2的数字。 我们有成熟的O(n)的算法得到数组中任意第K大的数字 。class Solution {public: int Partition...原创 2018-04-23 20:39:50 · 91 阅读 · 0 评论 -
剑指offer-最小的k个数
方法一、用快排的Partitions时间复杂度 O(n) vector 参数传递 如果需要在函数中对vector容器中数据调换顺序等操作需要是引用传递class Solution {public: int Partition(vector<int>&a,int low, int high){ int x = a[high]; in...原创 2018-04-23 22:16:18 · 89 阅读 · 0 评论 -
剑指offer-连续子数组的最大和
方法一、遍历遇到负抛弃之前的结果,重新积累,期间保留最大值 class Solution {public: int FindGreatestSumOfSubArray(vector<int> array) { int cur=array[0];//记录以array[i]为结尾的连续子数组的最大和 int maxs=array[0];//...原创 2018-04-23 23:46:09 · 71 阅读 · 0 评论 -
剑指offer-从1到n整数中1出现的次数
方法一、暴力时间复杂度O(n)O(n)O(n)class Solution {public:int NumberOf1Between1AndN_Solution(int n){ int cnt=0; for(int i=1;i<=n;i++) { string str; str = to_str...原创 2018-04-24 10:53:19 · 80 阅读 · 0 评论 -
剑指offer-把数组排成最小的数
题目描述 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。思路对数组排序,关键点是排序规则: * 若ab > ba 则 a > b, * 若ab < ba 则 a < b, * 若ab = ba 则 a = b; 关于c...原创 2018-04-24 14:32:27 · 124 阅读 · 0 评论 -
剑指offer-丑数
题目描述 把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。思路丑数升序存放在数组,每一个丑数都是由之前的丑数乘以2、3、或5得到的。 得到下一个丑数 只用比较3个数:用于乘2的最小的数、用于乘3的最小的数,用于乘5的最小的数class Soluti...原创 2018-04-24 16:04:17 · 82 阅读 · 0 评论 -
剑指offer-第一个只出现一次的字符
题目描述 在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置 没有返回-1思路:哈希哈希表键值key是字符,值value是该字符出现的次数 扫描两遍字符串即可 字符char 长度为8的类型,最多就256种可能 ASCII码作键值class Solution {public:int FirstNotRe...原创 2018-04-24 16:49:37 · 79 阅读 · 0 评论 -
剑指offer-数组中只出现一次的数字
思路一:异或时间O(n) 空间O(1) 先思考:一个数组里除了一个数字之外,其他的数字都出现了两次 我们想到了异或运算的性质:任何一个数字异或它自己都等于0 。也就是说,如果我们从头到尾依次异或数组中的每一个数字,那么最终的结果刚好是那个只出现一次的数字,因为那些出现两次的数字全部在异或中抵消掉了。 有了上面简单问题的解决方案之后,我们回到原始的问题。如果能够把原数组分为两个子数组。在...原创 2018-04-24 20:32:03 · 106 阅读 · 0 评论 -
数据流中的中位数 python 两个heap
数据流中的中位数# -*- coding:utf-8 -*-from heapq import *class Solution: def __init__ (self): self.maxheap = [] self.minheap = [] def Insert(self, num): if (len(self.maxheap...原创 2018-10-04 17:43:11 · 1323 阅读 · 0 评论