算法加强练习
ChunxueShi
通往程序媛的路上……
展开
-
算法题—n位正整数去掉k(k<=n)位数字得到最小数
问题描述:给定n位正整数a,去掉其中任意k对于给定的正整数a,编程计算删去k个数字后得到的最小数。输入:多组测试数据,每组测试数据的第一行是1个正整数a(a,第二行是正整数k(k输出:删掉个数字后的最小数,每组测试数据输出单独一行,如果首位数字为0,删除首位数字。#include #define MAX 10000000int num[MAX];//返回删除的位置int原创 2017-11-06 21:45:43 · 7150 阅读 · 0 评论 -
百度2017秋招真题——提利昂的赏赐
题目描述:提利昂收服山地部落之后决定犒赏士卒,本着陈力就列的原则,他决定给五种人以赏赐:1.作战能力>80,并且至少有一项特殊能力的人,每人8000银鹿2.作战能力>85,并且声望>80的人,每人4000银鹿3.作战能力>90,每人2000银鹿4.作战能力>85的灼人部成员每人1000银鹿5.声望>80的军官每人850银鹿。提利昂想要尽量多的犒赏部下,所以只要满足条件即可得到奖赏,...原创 2019-04-23 12:53:50 · 220 阅读 · 0 评论 -
python——《剑指 offer》面试题5:替换空格
题目描述请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。解题思路:为了减少时间复杂度,先遍历一遍字符串,统计空格的个数,从而计算出新字符串的长度,然后设置两个指针,分别从新旧字符串的尾部开始依次移动,如果遇到字符,那么就直接复制过来指针向前移动一个单位,如果遇到空格,则将‘%’...原创 2019-05-05 17:16:48 · 200 阅读 · 0 评论 -
python——《剑指 offer》面试题6:从尾到头打印链表
题目描述输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。解题思路:将链表中从头到尾的各个节点中的值存在list中,再逆序返回。# -*- coding:utf-8 -*-# class ListNode:# def __init__(self, x):# self.val = x# self.next = None...转载 2019-05-05 19:41:04 · 195 阅读 · 0 评论 -
python——《剑指 offer》面试题7:重建二叉树
题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。解题思路:1.在二叉树的前序遍历序列中,第一个数字总是树的根结点的值;2.在中序遍历序列中,根结点的值总是在序列的中间,左子树的节点的值位于...原创 2019-05-05 20:51:37 · 292 阅读 · 0 评论 -
python——递归方法判断回文字符串
题目描述:▪回文定义: ⼀个正向和反向读是相同的字符串–level,noon–蜜蜂酿蜂蜜,静泉⼭上⼭泉静,上海⾃来⽔来⾃海上▪当给定⼀个字符串str,需要判断该字符串是否为回⽂–如果是回⽂返回True,否则返回False解题思路:▪不妨设已经有⼀个函数 is_palindrome(s)可以⽤来求解该问题▪不妨设 s=’level’▪如何将is_palindrom...原创 2019-05-11 11:09:54 · 4032 阅读 · 0 评论 -
python——递归方法解决全排列问题
题目描述:▪输⼊的字符s=“ABC”,由字符A,B 和C 组成的全排列为–[“ABC”, “ACB”, “BAC”, “BCA”, “CAB”, “CBA”]解题思路:▪不妨设求解原问题的函数为permutation(s)▪如何将问题进行分解形成子问题,从而可以寻求朋友的帮助?python 代码如下:⚠️对于长度为n的字符串,共有n!个全排列,因此代码的时间复杂度为...原创 2019-05-11 11:21:10 · 3832 阅读 · 3 评论 -
python——递归方法解决汉诺塔问题
汉诺塔移动规则:▪每次只能移动⼀个盘⼦▪移动过程中,⼩的盘⼦不能处于⽐它⼤的盘⼦下⾯解题思路:▪不妨设有函数hanoi( )可以求解该问题,函数参数如何设计?–函数hanoi(n, S=‘A’, T=‘B’,H=‘C’) 可以求解该问题,其中n 为盘⽚数,A, B 和C 分别为三个柱⼦,S 表⽰出发的柱⼦,T 为⽬的柱,H 为过渡⽤柱⼦python代码:...原创 2019-05-11 11:46:55 · 2053 阅读 · 0 评论 -
python——排序算法实现
1.选择排序原理:对每⼀个位置从序列中依次选择出在该位置的元素。(例如,选出最大值放在最后一个位置,选出第二大的元素放在倒数第二个位置)python代码实现:#coding=utf-8def sel_sort_rec(seq, n): if n==0: #边界条件 return ...原创 2019-05-11 13:07:51 · 279 阅读 · 0 评论 -
python实现——优惠券凑单问题
假如有一张使用条件是满X元的优惠券,比如满1000减100,一共有n个商品可以选择,设计一个算法,计算使用这张优惠券所需要的最小代价。(每种商品只能购买一件)输入:目标金额 商品个数 商品价格列表(多个商品)输出:凑单后总价样例输入:1000 4 430 550 440 555样例输出:1105编程思路:1.再价格列表中,先找出单价大于等于...原创 2019-08-29 15:27:43 · 3305 阅读 · 0 评论 -
最先取到红球为胜问题(升级版)
题目描述:一个袋子里面有n个红球,m个蓝球,A,B,C三个人按顺序轮流取球,每次取一个球,A,B中谁先取中红球,谁获胜,C每次只是取走一个球,不计胜负,如果直到取完所有的球,A,B都没有取到红球,则B获胜。请问A获胜的概率是多少?输入:两个整数n和m,分别代表红球和蓝球的个数输出:A获胜的概率,结果保留5位小数输入样例1:1 1输出样例1:0.50000输入样例...原创 2019-09-08 17:59:34 · 656 阅读 · 0 评论 -
百度2017秋招真题——士兵队列
题目描述:一队士兵在操场上排成一列,士兵总数为n,士兵按照队伍从前往后的顺序从1到n依次编号。每个士兵有各自的身高,第i个士兵的身高为ai。士兵列队完毕后,将军走到队列的最前面。因为身高不一,有些士兵可能被前面身高更高的挡住了,这样将军就看不到他们。将军能看到某个士兵当且仅当他的身高严格大于他前面的所有士兵。问将军一共能看到多少个士兵。输入第一行输入一个整数T(T<=100),表示测试...原创 2019-04-23 11:32:58 · 1071 阅读 · 0 评论 -
小马智行Pony.ai算法实习生笔试题3——求相邻数字经K次交换得到的最大值
题目描述:数组中存储了一堆小于10的非负整数,整个数组从左到右代表一个正整数(如数组[0,1,3,2]代表正整数132)。现给出一个正整数K,要求经过K次数组相邻位置元素交换(必须完成K次交换),使得这个数组代表的数字最大。例如,int array[]={0,1,3,2},K=1,则经过1次交换后,数组能代表的最大值为1032;int array[]={0,1,3,2},K=2,则经过...原创 2019-04-22 19:24:46 · 6027 阅读 · 4 评论 -
打卡LeetCode第一天——两数之和
题目:给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。示例:给定nums=[2,7,11,15],target=9因为nums=[0]+nums=[1]=2+7=9所以返回 [0,1]【python代码】class Solution(object): def twoSum(self, ...原创 2018-10-05 11:05:38 · 204 阅读 · 0 评论 -
打卡LeetCode第二天——两数相加
题目:给定两个非空链表来表示两个非负整数。位数按照逆序方式存储,它们的每个节点只存储单个数字。将两数相加返回一个新的链表。你可以假设除了数字 0 之外,这两个数字都不会以零开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807【python代码】# ...原创 2018-10-05 13:45:43 · 187 阅读 · 0 评论 -
打卡LeetCode第三天——无重复字符的最长子串
题目要求:给定一个字符串,找出不含有重复字符的最长子串的长度。示例 1:输入: "abcabcbb"输出: 3 解释: 无重复字符的最长子串是 "abc",其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 无重复字符的最长子串是 "b",其长度为 1。示例 3:输入: "pwwkew"输出: 3解释: 无重复字符的最长子串是 "wke"原创 2018-10-15 12:59:48 · 154 阅读 · 0 评论 -
《剑指 offer》面试题4:二维数组中的查找
题目描述:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。解题思路:首先选取数组中右上角的数字,存在以下3种情况:(1)如果该数字等于要查找的数字:则查找过程结束;(2)如果该数字大于要查找的数字:则剔除这个数字所在的列;(3)如果...原创 2019-04-10 22:22:21 · 119 阅读 · 0 评论 -
《剑指 offer》面试题3:数组中重复的数字
题目描述:在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。python实现:# -*- coding:utf-8 -*-class Solution: ...原创 2019-04-09 21:34:32 · 115 阅读 · 0 评论 -
Numpy中的数据
python很方便,但也会很慢。不过它允许你访问执行用C等语言写的代码的库。Numpy就是这样一个库:它为python中的数学运算提供了一个更快速的替代方案,可以与数字组高效搭配使用,如矩阵。Numpy 是一个很大型的库。1.导入Numpyimport numpy as np之后就可以给函数和类型名称加上前缀np.来使用该库。2.数据类型和形状Numpy中处理数字的常见方式是通...原创 2019-04-16 15:02:07 · 1714 阅读 · 0 评论 -
《剑指 offer》——不修改数组找出重复的数字
题目描述:不修改数组找出重复的数字在一个长度为N+1的数组里面的所有数字都在范围1~N范围内,所以数组至少有一个数字是重复的,请找出重复数字,但是不能修改输入的数组。# -*- coding:utf-8 -*-class Solution: def countRange(numbers,l,start,end): l=len(numbers) ...原创 2019-04-09 22:07:11 · 189 阅读 · 0 评论 -
python编写softmax函数、交叉熵函数
python代码如下:import numpy as np# Write a function that takes as input a list of numbers, and returns# the list of values given by the softmax function.def softmax(L): pass expL = np.exp...原创 2019-04-17 10:24:26 · 2638 阅读 · 0 评论 -
梯度下降——梯度计算
为了最小化误差函数,我们需要获得一些导数。我们开始计算误差函数的导数吧。首先要注意的是 s 型函数具有很完美的导数。即σ'(x) = σ(x) (1-σ(x))原因是,我们可以使用商式计算它:...原创 2019-04-17 11:21:24 · 1634 阅读 · 0 评论 -
实现梯度下降算法——一个单层的神经网络来完成分类器的正确分类
在该 Lab 中,我们将实现梯度下降算法的基本函数,以便在小数据集中查找数据边界。 首先,我们将从一些函数开始,帮助我们绘制和可视化数据。import matplotlib.pyplot as pltimport numpy as npimport pandas as pd#Some helper functions for plotting and drawing linesd...转载 2019-04-17 16:29:36 · 625 阅读 · 0 评论 -
不同进制的计时
题目描述:24小时计时制是一个广为使用的计时体系。在一个古老的村庄使用二进制下的24小时制,这时“11:11”表示的就是3点03分。给一个未知的时刻,形如"A:B"的形式来表示,A,B分别是一个字符串,字符串可以由0-9和A-Z组成,分别代表0-9和10-35.求出这个时刻所处的所有可能的进制。输入:一行字符串,即“A:B”的形式,A,B的含义及组成如题面输出:输出可以包含...原创 2019-09-10 16:43:01 · 400 阅读 · 0 评论