算法 【算法】相反数 问题描述 有 N 个非零且各不相同的整数。请你编一个程序求出它们中有多少对相反数(a 和 -a 为一对相反数)。 输入格式 1. 第一行包含一个正整数 N。(1 ≤ N ≤ 500)。 2. 第二行为 N 个用单个空格隔开的非零整数,每个数的绝对值不超过1000,保证这些整数各不相同。 输出格式 1. 只输出一个整数,即这 N 个数中包含多少对相反数。 样例输入 5 1 2 3
算法 【算法】出现次数最多的数 问题描述 给定n个正整数,找出它们中出现次数最多的数。如果这样的数有多个,请输出其中最小的一个。 输入格式 1. 输入的第一行只有一个正整数n(1 ≤ n ≤ 1000),表示数字的个数。 2. 输入的第二行有n个整数s1, s2, …, sn (1 ≤ si ≤ 10000, 1 ≤ i ≤ n)。相邻的数用空格分隔。 输出格式 1. 输出这n个次数中出现次数最多的数。如果这样的数有多个,输出其中最小的一个。 样例输入 6 10 1 10
算法 【算法】ISBN号码 问题描述 每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字、1位识别码和3位分隔符,其规定格式如“x-xxx-xxxxx-x ”,其中符号“-”是分隔符(键盘上的减号),最后一位是识别码,例如0-670-82162-4就是一个标准的ISBN码。ISBN 码的首位数字表示书籍的出版语言,例如0代表英语;第一个分隔符“-”之后的三位数字代表出版社,例如670代表维京出版社;第二个分隔之后的五位数字代表该书在出版社的编号;最后一位为识别码。 识别码的计算方法如下: 首位数字乘以1加上次位数字乘以2……以此类推,用所得的结果mod 11,所得的余数即为识别码,如果余数为10,则识别码为大写字母X。例如ISBN 号码0-670-82162-4中的识别码4是这样得到的:对067082162这9个数字,从左至右,
leetcode 【LeetCode】104. Maximum Depth of Binary Tree 问题描述 Given a binary tree, find its maximum depth. The maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf node. 求树的深度 代码
leetcode 【LeetCode】102. Binary Tree Level Order Traversal 问题描述 Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level). For example: Given binary tree [3,9,20,null,null,15,
leetcode 【LeetCode】101. Symmetric Tree 问题描述 Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center). For example, this binary tree [1,2,2,3,4,4,3] is symmetric: 1
算法 【编程之美】中国象棋将帅问题 问题描述 在中国象棋里将和帅是不能碰面的,如下图所示,当将位于d10时,帅就不能在d1,、d2、d3。请写一个程序,输出将、帅所有的合法位置。要求在代码中仅用一个变量。 如果只是输出将、帅的合法位置,那这题就比较容易了,只要二重循环判断一下就行,但后面一个条件就将题目的难度上升了好多。 算法分析 因为是判断两个对象A、B的位置符不符合要求,而且每个对象一共就只有9个位置可选,可以比较快地想到程序的大体框架: 1. 遍历A的位置 2. 遍历B的位置 3. 判断A、B的位置组合是否满足要求 4. 如果满足,则输出 因为每个对象只有9个位置,所以循环次数一共也就81次。
C++ 【算法】检测数组里是否有两个数之和等于某个数 问题: 检测数组里是否有两个数之和等于某个数 解决方法一:先将数组排序,然后从两头开始遍历 数组排序后,从左端开始取最小值,从右端取最大值, 判断两者之和与目标的大小: 1. 等于时,输出两个数; 2. 大于时,右端移到第2个数,继续判断; 3. 小于时,左端移到第2个数,继续判断。 #include #include #include using namespace std; void fun1(int a[], int length, int
C++ 【算法】十进制字符串转十六进制字符串 问题描述 将一个十进制字符串转化为十六进制字符串。 问题解决 这个问题如果只是十进制转化为十六进制,其实是比较容易的,只要了解短除法就可以解决了,但题目里数是字符串,这就将题目的难度增高了。因为如果只是int型,那最多也就支持个10位数;但字符串却可以上千位,所以我们使用短除法的时候会比较麻烦。 这里我先将字符串转成了int型,先把简单的10位数的实现出来,来理顺一下思路。下面是10进制数转16进制的代码: int main(){ string s; while (cin >> s){ int n = 0; // 将字符串转换为int类型 for (int i = s.length() -
C++ 【ACM】K尾相等数 问题描述: 从键盘输入一个自然数K(K>1),若存在自然数M和N(M>N),使得K^M 和K^N均大于或等于1000,且它们的末尾三位数相等,则称M和N是一对"K尾相等数"。请编写程序,输出M+N最小的K尾相等数。 样例: 输入输出2120问题分析: 末尾三位数只有1000个,从1到无穷大增大幂次时,肯定会出现同样的末尾三位数,比如n=10时(`n^M`大于1000时才有末尾三位数),幂次M12345n^M 10100100010000100000末尾三位数无无000所以当幂次为3时出现了第一个三位数,当幂次为4时出现了第二个三位数,N = 3,
C++ 【算法】烙饼排序 问题描述: 把一摞大小不一的烙饼按顺序排好,大的在下面,小的在上面, 要求只能用一只手去翻转烙饼位置,另一只手要端盘子; 输出最优化的排序过程。 -------------------------------------------------------------------------------- 示例: 3 1 2 翻转 1 , 当前烙饼排序 3 2 1 成功! -------------------------------------------------------------------------------- 算法描述: 问题解析:一个未排序的数列,如 a,b,c,d,~z 每一次选取其中一个数,将它与最后一个数之间的 所有数(包含它们两个)
leetcode 【LeetCode】100. Same Tree 问题描述 Given two binary trees, write a function to check if they are equal or not. Two binary trees are considered equal if they are structurally identical and the nodes have the same
leetcode 【LeetCode】88. Merge Sorted Array 问题描述 Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array. Note: You may assume that nums1 has enough space (size that is greater or equal to
leetcode 【LeetCode】83. Remove Duplicates from Sorted List 问题描述 Given a sorted linked list, delete all duplicates such that each element appear only once. For example, Given 1->1->2, return 1->2. Given 1->1->2->3->3, return 1->
leetcode 【LeetCode】70. Climbing Stairs 问题描述 You are climbing a stair case. It takes n steps to reach to the top. Each time you can either climb 1 or 2 steps. In how many distinct ways can you
leetcode 【LeetCode】67. Add Binary 问题描述 Given two binary strings, return their sum (also a binary string). For example, a = "11" b = "1" Return "100". 二进制加法 代码 class Solution { public: string addBinary(string a, string b) { int cur=
leetcode 【LeetCode】66. Plus One 问题描述 Given a non-negative number represented as an array of digits, plus one to the number. The digits are stored such that the most significant digit is at the head of the list.
leetcode 58. Length of Last Word 问题描述 Given a string s consists of upper/lower-case alphabets and empty space characters ' ', return the length of last word in the string. If the last word does not exist, return
leetcode 38. Count and Say 问题描述 The count-and-say sequence is the sequence of integers beginning as follows: 1, 11, 21, 1211, 111221, ... 1 is read off as "one 1" or 11. 11 is read off as "two 1s"
leetcode 36. Valid Sudoku 问题描述 Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules [http://sudoku.com.au/TheRules.aspx]. The Sudoku board could be partially filled, where empty cells are filled with
leetcode 【LeetCode】24. Swap Nodes in Pairs 问题描述 Given a linked list, swap every two adjacent nodes and return its head. For example, Given 1->2->3->4, you should return the list as 2->1->4->3. Your algorithm
leetcode 【LeetCode】27. Remove Element 问题描述 Given an array and a value, remove all instances of that value in place and return the new length. Do not allocate extra space for another array, you must do this in
leetcode 【Leetcode】Merge Two Sorted Lists Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists. 合并两个已排好序的数组 代码 #include using namespace
leetcode 【Leetcode】 问题描述 Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid. The brackets must close in
leetcode 【Leetcode】Roman to Integer 问题描述 Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from 1 to 3999. 罗马数字转数字,如VII=7 只要了解规则 [http://baike.baidu.com/link?url=x4oib22b_