![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法练习
文章平均质量分 73
poppy一直在
喜欢竭尽全力做一件事
展开
-
腾讯2017实习生编程之算法基础-字符移位
思路:这个实际上就是一个排序问题,大写字母排到小写字母后边并保持原来的相对位置,采用冒泡排序代码:import java.util.*;public class Main{ public static void main(String[] args){ Scanner sc=new Scanner(System.in); while(s原创 2016-07-16 22:57:20 · 430 阅读 · 0 评论 -
华为OJ之Sudoku-Java
1.题目描述2.基本思路目前想到的是暴力求解。(1)从第一行开始(第一行没找到,则第二行开始找,依此类推)找到第一个值为0的数的坐标(i,j),然后记录该i行中已经出现过的数字,以及j列中已经出现的数字,还有当前坐标所在的小九宫格中已经出现的数字,把1-9中第一个尚未出现的数字填进去,如果这里没有找到一个尚未出现的数字,则返回失败。(2)重复(1)的步骤寻找当前行下一个原创 2017-03-12 20:03:40 · 734 阅读 · 0 评论 -
华为OJ之称砝码
1.题目描述2.基本思路这道题目需要使用动态规划来做,可以这么来想,要看能否称出某中质量X,在已知能称出质量Y,且如果存在某种重量a的砝码有k个,且X=Y+a*n(03.实现代码import java.util.Scanner;public class Main { public static void main(String[] args)原创 2017-03-12 16:45:23 · 367 阅读 · 0 评论 -
经典面试题之数组中的逆序对
1.题目描述在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%10000000072.解题思路这道题主要是归并排序思想的应用,如果对归并排序不了解,请先看http://blog.csdn.net/sinat_30186009/artic原创 2016-08-23 10:44:19 · 326 阅读 · 0 评论 -
经典面试题之字符串的全排列
1.题目描述输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc,输出abc,acb,bac,bca,cab和cba2.问题分析这个问题我们一开始看起来会比较困难,但是如果仔细分析一下排列的实质,或许很快会有思路。我们来看排列的实质,字符串的abc第一个字符分别与后边的字符(含自己)交换可以得到abc,bac,cba,然后对这每一个字符串从第二个字符分别与后边的原创 2016-08-31 16:47:59 · 813 阅读 · 0 评论 -
经典面试题之求连续子数组最大和
输入一个整形数组(元素可能为正为负),求数组中连续的子数组使其和最大,打印出子数组思路:这道题主要要明白两个点,第一,需要设置一个变量max保存当前的最大值,另外一个变量sum记录不断增加元素之后的总和 第二,如果sum+array[i]>0,sum=sum+array[i],否则就是sum=array[i]。因为如果一个新元素加上之后使得sum 但如原创 2016-08-09 20:15:04 · 418 阅读 · 0 评论 -
经典面试题之最长滑道(2017爱奇艺内推笔试题)
1.题目描述输入输出:2.思路分析这道题实际上就是要求从最大值到最小值所能经过的最长路径,那么我们可以这么考虑,对于每一个坐标点,它到最小值的必定有一个最长路径len,那么我们只要找出所有坐标点到最小值的最长路径,然后再从中找到最大值即为所求答案。这样,我们的问题就只剩下如何求一个坐标点到最小值的最大长度len,很快我们发现每个坐标点的len必定是其上下左右坐标原创 2016-08-29 20:08:00 · 3623 阅读 · 0 评论 -
经典面试题之两个链表的第一个公共结点
题目描述:输入两个链表,找出它们的第一个公共结点。我们先看下边这个图:对于单向链表而言,从两个单链表第一个公共结点开始,之后它们的所有结点都是重合的,不可能再出现分叉。对于题目,我们最简单的想法就是在第一个链表上顺序遍历每个结点,每遍历到一个结点时,在第二个链表上顺序遍历每个结点,直到找到公共顶点,但是这样的时间复杂度为O(mn)。实际上,我们上边单链表的特点可以知道,可以采取原创 2016-08-28 17:44:53 · 1155 阅读 · 0 评论 -
排序系列之快速排序和归并排序
快速排序的思想: 每次从数组中挑出一个数字作为基准,比它小的数放左边,比它大的数放右边 然后继续从左半部分和右半部分递归执行该操作,直到只剩一个数,返回归并排序的思想: 将数组分为两个部分,左边一部分,右边一部分,一直递原创 2016-07-20 20:24:59 · 388 阅读 · 0 评论 -
2016华为暑期实习生编程题之和尚挑水
某寺庙里7个和尚:轮流挑水,为了和其他任务不能冲突,各人将有空天数列出如下表:和尚1: 星期二,四;和尚2: 星期一,六;和尚3: 星期三,日;和尚4: 星期五;和尚5: 星期一,四,六;和尚6: 星期二,五;和尚7: 星期三,六,日;请将所有合理的挑水时间组合思路:自己只能想到穷举,可以采取一种回溯法穷举,利用一个矩阵存储,行表示星期,列表示和尚,和尚原创 2016-07-19 19:21:37 · 965 阅读 · 0 评论 -
腾讯2017实习生编程题之构造回文
思路:一开始看起来没有思绪,但是仔细想想,这个问题可以转换为两个字符串求公共子序列 注意一个概念上的差异,公共子序列和公共子串。前者不要求连续,后者要求连续。 这个问题可以转换为字符串和其reverse之后的字符串求最大子序列 那么,怎么求最大子序列,考虑动态规划解决这个问题。 假设Xi=,Yj=为两个序列,用矩阵c[i,原创 2016-07-17 22:52:14 · 372 阅读 · 0 评论 -
腾讯2017实习生编程题之有趣的数字
腾讯2017实习编程题思路: 1.采用map来处理,TreeMap中key存放输入数字的值(达到排序的效果),vlaue存放数字出现的次数 2.考虑输入所有数字中不同数字的个数为1,2和大于2三种情况 3.绝对值最大的对数是最大和最小数之间的组合,取TreeMap中第一个和最后一个的value,对数=firstCount*lastCount原创 2016-07-16 22:20:12 · 749 阅读 · 0 评论 -
匈牙利算法
因为“趣味算法系列之--匈牙利算法”这篇文章写得相当精彩,本文许多从中借鉴。Blog链接为:http://blog.csdn.net/dark_scope/article/details/8880547匈牙利算法是一种通过使用增广路径来解决二分图的最大匹配的算法,由匈牙利数学家Edmonds于1965年提出。1.二分图设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交的子集(原创 2017-05-26 20:34:19 · 668 阅读 · 0 评论