![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法学习
科比的缪斯
这个作者很懒,什么都没留下…
展开
-
Screen
Screen5.1 安装screen流行的Linux发行版(例如Red Hat Enterprise Linux)通常会自带screen实用程序,如果没有的话,可以从GNU screen的官方网站下载。[root@TS-DEV ~]# yum install screen[root@TS-DEV ~]# rpm -qa|grep screenscreen-4.0.3-4.el5[root@TS-DEV ~]#5.2 创建一个新的窗口安装完成后,直接敲命令screen就可以启动它。但是这样启原创 2022-02-08 22:56:58 · 717 阅读 · 0 评论 -
Anaconda安装与使用
Anaconda安装1.1 下载安装文件1) 如果想直接下载到本地,在通过ftp上传到远程服务器,请忽略一下操作2) 如果服务器是联网的,可以直接通过wget命令【centos版本】直接下载服务器,操作如下:我使用的linux系统为centOS7.6.18-64bits,使用的是wget命令进行的脚本文件下载,命令如下:wget https://repo.anaconda.com/archive/Anaconda3-2019.10-Linux-x86_64.sh1.2 执行安装命令:sh A原创 2022-02-08 22:54:56 · 629 阅读 · 0 评论 -
剑指offer(1/20)
二叉搜索树的第k个结点给定一棵二叉搜索树,请找出其中的第k小的结点。public class Solution { int index = 0; TreeNode KthNode(TreeNode pRoot, int k) { if(pRoot != null){ TreeNode node = KthNode(pRoot.left,k); if(node != null){ ret原创 2021-01-20 14:41:34 · 111 阅读 · 1 评论 -
剑指offer(1/19)
二叉树的下一个结点给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。/*public class TreeLinkNode { int val; TreeLinkNode left = null; TreeLinkNode right = null; TreeLinkNode next = null; TreeLinkNode(int val) { this.v原创 2021-01-19 13:24:44 · 65 阅读 · 0 评论 -
剑指offer(1/18)
正则表达式匹配请实现一个函数用来匹配包括’.‘和’‘的正则表达式。模式中的字符’.‘表示任意一个字符,而’'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"abaca"匹配,但是与"aa.a"和"ab*a"均不匹配public class Solution { public boolean match(char[] str, char[] pattern){ if (str == null原创 2021-01-18 13:35:55 · 60 阅读 · 0 评论 -
剑指offer(1/17)
条件限制求和求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。public class Solution { public int Sum_Solution(int n) { int sum = n; boolean ans = (n>0)&&((sum += Sum_Solution(n-1))>0); return sum;原创 2021-01-17 13:11:10 · 77 阅读 · 0 评论 -
剑指offer(1/16)
和为S的两个数字输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。import java.util.ArrayList;public class Solution { public ArrayList<Integer> FindNumbersWithSum(int [] array,int sum) { ArrayList<Integer> result = new Array原创 2021-01-16 11:41:37 · 97 阅读 · 0 评论 -
剑指offer(1/15)
数字在升序数组中出现的次数统计一个数字在升序数组中出现的次数。public class Solution { public int GetNumberOfK(int [] array , int k) { if(array.length <= 0 || array == null) return 0; int first = binarySearch(array,k); int last = binarySearch(array,k+1);原创 2021-01-15 15:00:43 · 69 阅读 · 0 评论 -
剑指offer(1/14)
第一次只出现一次的字符在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).(从0开始计数)public class Solution { public int FirstNotRepeatingChar(String str) { int res = -1; if(str ==null || str.length() == 0) return res;原创 2021-01-14 13:04:08 · 66 阅读 · 0 评论 -
剑指offer(1/13)
整数中1的个数求出1—13的整数中1出现的次数,并算出100-1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)。public class Solution { public int NumberOf1Between1AndN_Solution(int n) { int原创 2021-01-13 17:15:08 · 52 阅读 · 0 评论 -
剑指offer(1/12)
数组中出现长度超过一半的数字数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。import java.util.Arrays;public class Solution { public int MoreThanHalfNum_Solution(int [] array) { Arrays.sort(array);原创 2021-01-12 17:07:38 · 57 阅读 · 0 评论 -
剑指offer(1/11)
复杂链表的复制输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针random指向一个随机节点),请对此链表进行深拷贝,并返回拷贝后的头结点。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)//下面那段代码思维太混乱了,大家不要参考,如果要用map解决此题,看这段代码就好import java.util.*;public class Solution { public RandomListNode Clone(RandomListNo原创 2021-01-11 21:04:47 · 47 阅读 · 0 评论 -
剑指offer(1/10)
层次遍历从上往下打印出二叉树的每个节点,同层节点从左至右打印。import java.util.ArrayList;import java.util.LinkedList;public class Solution { public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) { ArrayList<Integer> list = new ArrayList<>();原创 2021-01-10 13:19:47 · 58 阅读 · 0 评论 -
剑指offer(1/9)
顺时针打印矩阵输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下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.import java.util.ArrayList;public class Solution { public ArrayList<Integer> printMatrix(int [][] mat原创 2021-01-09 23:02:30 · 59 阅读 · 0 评论 -
剑指offer(1/8)
合并两个排序链表输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。//递归/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/public class Solution { public ListNode Merge(ListNode list1,ListNode list2) {原创 2021-01-08 11:07:34 · 49 阅读 · 0 评论 -
剑指offer(1/7)
调整数组顺序使奇数位于偶数前面输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。public class Solution { public void reOrderArray(int [] array) { for(int i = 0 ;i < array.length; i++){ for(int j = array.length原创 2021-01-07 11:09:47 · 56 阅读 · 0 评论 -
剑指offer(1/6)
矩形覆盖我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?假设:n块矩形有f(n)种覆盖方法。进行逆向分析,要完成最后的搭建有两种可能。第一种情况等价于情形1中阴影部分的n-1块矩形有多少种覆盖方法,为f(n-1);第二种情况等价于情形2中阴影部分的n-2块矩形有多少种覆盖方法,为f(n-2);故f(n) = f(n-1) + f(n-2),还是一个斐波那契数列。。。。public class Solution {原创 2021-01-06 11:17:38 · 40 阅读 · 0 评论 -
剑指offer(1/5)
斐波那契数列大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0,第1项是1)。n≤39n≤39public class Solution { public int Fibonacci(int n) { int f = 0,g = 1; for(int i = 0;i < n; i++){ g += f; f = g - f; }原创 2021-01-05 10:56:05 · 123 阅读 · 0 评论 -
剑指offer(1/4)
重建二叉树输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。/** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * Tr原创 2021-01-04 11:11:49 · 48 阅读 · 0 评论 -
剑指offer(1/3)
替换空格请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。import java.io.BufferedReader;import java.io.InputStreamReader;public class Main { public static void main(String args[]) throws Exception{ BufferedReader bf =原创 2021-01-03 11:11:27 · 50 阅读 · 0 评论 -
剑指offer(1/2)
只出现一次的数字一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。// 前提知识:// 异或运算:如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0。// n^0 = n;// n^n = 0;// n^n^m = n^(n^m) 满***换律// 所以,我们可以让数组中的每一个数异或一下,最后会得到一个结果ret,就是两个出现一次的数字的异或结果这个结果肯定是由两个不同数字异或而来,因此我们找ret二进制中为1的位置i,因为原创 2021-01-02 12:02:46 · 136 阅读 · 2 评论 -
华为机试 (12/21)
素数伴侣题目描述题目描述若两个正整数的和为素数,则这两个正整数称之为“素数伴侣”,如2和5、6和13,它们能应用于通信加密。现在密码学会请你设计一个程序,从已有的N(N为偶数)个正整数中挑选出若干对组成“素数伴侣”,挑选方案多种多样,例如有4个正整数:2,5,6,13,如果将5和6分为一组中只能得到一组“素数伴侣”,而将2和5、6和13编组将得到两组“素数伴侣”,能组成“素数伴侣”最多的方案称为“最佳方案”,当然密码学会希望你寻找出“最佳方案”。输入:有一个正偶数N(N≤100),表示待挑选的自然原创 2020-12-21 16:02:31 · 386 阅读 · 0 评论 -
华为机试 (12/16)
识别有效的IP地址和掩码并进行分类统计请解析IP地址和对应的掩码,进行分类识别。要求按照A/B/C/D/E类地址归类,不合法的地址和掩码单独归类。所有的IP地址划分为 A,B,C,D,E五类A类地址1.0.0.0~126.255.255.255;B类地址128.0.0.0~191.255.255.255;C类地址192.0.0.0~223.255.255.255;D类地址224.0.0.0~239.255.255.255;E类地址240.0.0.0~255.255.255.255私网IP范围原创 2020-12-16 18:43:17 · 169 阅读 · 0 评论 -
华为机试 (12/11)
记负均正import java.io.*;import java.util.*;/*首先输入要输入的整数个数n,然后输入n个整数。输出为n个整数中负数的个数,和所有正整数的平均值,结果保留一位小数。*/public class Main{ public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(原创 2020-12-11 09:51:02 · 140 阅读 · 0 评论 -
华为机试 (11/22)
函数编写编写一个函数,传入一个int型数组,返回该数组能否分成两组,使得两组中各元素加起来的和相等,并且,所有5的倍数必须在其中一个组中,所有3的倍数在另一个组中(不包括5的倍数),能满足以上条件,返回true;不满足时返回false。import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.Arrays;import java.util.L原创 2020-11-22 12:43:18 · 194 阅读 · 0 评论 -
华为机试 (11/10)
整形数组合并将两个整型数组按照升序合并,并且过滤掉重复数组元素。输出时相邻两数之间没有空格。请注意本题有多组样例。示例1输入31 2 54-1 0 3 2输出-101235import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.Arrays;/** * 数组合并 * * @author zqfly * *原创 2020-11-10 11:03:01 · 156 阅读 · 0 评论 -
华为机试 (11/8)
输出最小的k个数输入n个整数,输出其中最小的k个。本题有多组输入样例,请使用while(cin>>)等方式处理import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(原创 2020-11-08 19:16:39 · 144 阅读 · 0 评论 -
华为机试 (10/31)
学英语Jessi初学英语,为了快速读出一串数字,编写程序将数字转换成英文:如22:twenty two,123:one hundred and twenty three。说明:数字为正整数,长度不超过九位,不考虑小数,转化结果为英文小写;输出格式为twenty two;非法数据请返回“error”;关键字提示:and,billion,million,thousand,hundred。本题含有多组输入数据。import java.util.*;import java.io.*;原创 2020-10-31 08:30:27 · 210 阅读 · 0 评论 -
华为机试 (10/28)
整数与IP地址间的转换原理:ip地址的每段可以看成是一个0-255的整数,把每段拆分成一个二进制形式组合起来,然后把这个二进制数转变成一个长整数。举例:一个ip地址为10.0.3.193每段数字 相对应的二进制数10 000010100 000000003 00000011193 11000001组合起来即为:000010原创 2020-10-28 10:02:35 · 142 阅读 · 0 评论 -
华为机试 (10/25)
字符串加解密1、对输入的字符串进行加解密,并输出。2加密方法为:当内容是英文字母时则用该英文字母的后一个字母替换,同时字母变换大小写,如字母a时则替换为B;字母Z时则替换为a;当内容是数字时则把该数字加1,如0替换1,1替换2,9替换0;其他字符不做变化。3、解密方法为加密的逆过程。 import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.Arrays;import java.uti原创 2020-10-25 15:26:05 · 142 阅读 · 0 评论 -
华为机试 (10/21)
删除字符串中出现次数最少的字符实现删除字符串中出现次数最少的字符,若多个字符出现次数一样,则都删除。输出删除这些单词后的字符串,字符串中其它字符保持原来的顺序。注意每个输入文件有多组输入,即多个字符串用回车隔开import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.LinkedHashMap;public class Main {原创 2020-10-21 14:12:36 · 219 阅读 · 0 评论 -
华为机试 (10/18)
字符串分隔•连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组;•长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。import java.io.*;public class Main { public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));原创 2020-10-18 19:05:27 · 136 阅读 · 0 评论 -
华为机试 (10/11)
字符串最后一个单词的长度计算字符串最后一个单词的长度,单词以空格隔开。import java.io.InputStream; public class Main{ public static void main(String[] args) throws Exception{ int times=0; InputStream in=System.in; char c=(char) in.read(); while(c!='\n原创 2020-10-11 09:11:35 · 122 阅读 · 0 评论 -
华为机试 (10/10)
自守数自守数是指一个数的平方的尾数等于该数自身的自然数。例如:25^2 = 625,76^2 = 5776,9376^2 = 87909376。请求出n以内的自守数的个数import java.io.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReade原创 2020-10-10 15:34:27 · 132 阅读 · 0 评论 -
华为机试 (10/7)
计算字符串相似度对于不同的字符串,我们希望能有办法判断相似程度,我们定义了一套操作方法来把两个不相同的字符串变得相同,具体的操作方法如下:1 修改一个字符,如把“a”替换为“b”。2 增加一个字符,如把“abdd”变为“aebdd”。3 删除一个字符,如把“travelling”变为“traveling”。比如,对于“abcdefg”和“abcdef”两个字符串来说,我们认为可以通过增加和减少一个“g”的方式来达到目的。上面的两种方案,都只需要一次操作。把这个操作所需要的次数定义为两个字符串的距离原创 2020-10-07 18:35:00 · 147 阅读 · 0 评论 -
华为机试 (10/6)
24点游戏算法问题描述:给出4个1-10的数字,通过加减乘除,得到数字为24就算胜利import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.IOException;public class Main { public static int []a; public static int []b; public static void init(){ a = ne原创 2020-10-06 10:01:47 · 163 阅读 · 0 评论 -
华为机试 (10/5)
只出现一次的字符找出字符串中第一个只出现一次的字符import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new I原创 2020-10-05 09:50:31 · 122 阅读 · 0 评论 -
华为机试 (10/4)
删除链表指定节点输入一个单向链表和一个节点的值,从单向链表中删除等于该值的节点,删除后如果链表中无节点则返回空指针。import java.io.*;public class Main { //构建节点 public static class Node { Node next; int val; Node(int val) { this.val = val; next = null;原创 2020-10-04 11:20:41 · 384 阅读 · 0 评论 -
华为机试 (9/30)
小球落地五次高度假设一个球从任意高度自由落下,每次落地后反跳回原高度的一半; 再落下, 求它在第5次落地时,共经历多少米?第5次反弹多高?最后的误差判断是小数点6位import java.io.BufferedReader;import java.io.InputStreamReader;public class Main { public static void main(String[] args) throws Exception { BufferedReader b原创 2020-09-30 15:01:14 · 135 阅读 · 0 评论 -
华为机试 (9/29)
简单密码破解他是这么变换的,大家都知道手机上的字母: 1–1, abc–2, def–3, ghi–4, jkl–5, mno–6, pqrs–7, tuv–8 wxyz–9, 0–0,就这么简单,渊子把密码中出现的小写字母都变成对应的数字,数字和其他的符号都不做变换,声明:密码中没有空格,而密码中出现的大写字母则变成小写之后往后移一位,如:X,先变成小写,再往后移一位,不就是y了嘛,简单吧。记住,z往后移是a哦。示例输入YUANzhi1987输出zvbo9441987// Javaimp原创 2020-09-29 17:34:16 · 270 阅读 · 0 评论