
算法
自我算法练习
何大春
孤行莫厌,长行莫倦!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
剑指offer JZ11 二进制中1的个数
描述输入一个整数,输出该数32位二进制表示中1的个数。其中负数用补码表示。示例1输入:10返回值:2发现一个很小巧的方式数字n能进行多少次n&(n-1)运算的,则该10进制的二进制就包含多少个1。public class Solution { public int NumberOf1(int n) { int count = 0; while(n !=0){ count++; //有多少个1就会做原创 2021-09-14 17:50:31 · 165 阅读 · 0 评论 -
leetcode:20.有效的括号,括号匹配问题
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/valid-parentheses示例 1:输入:s = “()”输出:true示例 2:输入:s = “()[]{}”输出:true示例 3:输入:s = “(]”输出:false示例 4:输入:原创 2021-08-16 22:48:23 · 188 阅读 · 0 评论 -
剑指offer16:合并两个排序的链表
合并两个排序的链表输入:{1,3,5},{2,4,6}输出:{1,2,3,4,5,6}解题思路:由于两个链表已经排序好且单调递增,只要我们对比节点的值,哪个小的先放进新建的链表就行了,如果是单调递减也是同理。主要有两种方法,一种是递归,一种是正常的遍历比较大小。递归:/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val;原创 2021-05-15 21:51:50 · 738 阅读 · 2 评论 -
剑指offer15:输入一个链表,反转链表后,输出新链表的表头(链表反转)
输入一个链表,反转链表后,输出新链表的表头示例:输入{1,2,3}返回值{3,2,1}思路:实现链表的反转,将node1->node2变成node1<-node2。使用三个指针,分别是前节点pre,当点节点head,下一个节点next。通过节点指向的变化,将当前节点的下一个节点指向前节点,以此类推最后返回的节点pre就是反转之后的链表头。下面展示一些 内联代码片。/*public class ListNode { int val; ListNode next =原创 2021-05-15 21:10:36 · 185 阅读 · 6 评论 -
剑指Offer14:输入一个链表,输出该链表中倒数第k个结点。 如果该链表长度小于k,请返回空。
输入一个链表,输出该链表中倒数第k个结点。例如:输入:{1,2,3,4,5},1输出:{5}思路:采用双指针得出倒数第k个节点,先让第一个指针从开头遍历到第k个节点,第二个指针后续和第一个指针一起走,知道第一个指针为null。下面展示一些 内联代码片。public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param pHead ListNode类原创 2021-05-15 20:11:07 · 212 阅读 · 0 评论 -
剑指Offer 8:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
此问题和斐波那契数列基本差不多,当青蛙在第n个台阶时,只能通过第n-1个台阶跳一次,或者第n-2个台阶跳两次。F(n)=F(n-1)+F(n-2)递归实现。不过斐波那契数列F(0)=0,F(1)=1,F(2)=1。而这个问题当n<=2时,F(n)=n,n>2时就满足递推公式了。下面展示一些 内联代码片。public class Solution { public int jumpFloor(int target) { if(target<=2)原创 2021-05-10 21:24:34 · 170 阅读 · 0 评论 -
剑指offer5:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
思路:栈1用来做入队的队列,栈2用来模拟出队列。当栈2为空时,栈1出栈到栈2中,栈2再出栈,即完成出对列。下面展示一些 内联代码片。import java.util.Stack;public class Solution { Stack<Integer> stack1 = new Stack<Integer>(); Stack<Integer> stack2 = new Stack<Integer>(); public void原创 2021-05-10 20:33:00 · 167 阅读 · 0 评论 -
恒生电子2018笔试题a编程题:编写程序将由数字及字符组成的字符串中的数字截取出来并按顺序输出
例如:“ABC137GMNQQ2049PN5FFF”输出结果应该为01234579思路:先将字符串转换成字符数组,用一个新的字符数组将数字提取出来。去掉多余的数组下标,最后进行排序输出。public char[] changeNum(String s){ //将字符串转成数组 char[] arr=s.toCharArray(); char[] newarr = new char[arr.length]; int j=0; for(int i=0;i<arr.length;原创 2021-05-10 14:14:10 · 577 阅读 · 0 评论 -
恒生2020秋招笔试编程题:在一个二维数组中,每一行都按照从左到右递增顺序排序,每一列都按照从上到下递增的顺序排序,请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
恒生2020秋招笔试编程题:在一个二维数组中,每一行都按照从左到右递增顺序排序,每一列都按照从上到下递增的顺序排序,请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。public class Solution { public boolean Find(int target, int [][] array) { //对数组进行循环遍历 for(int i = 0;i < array.length;i++) for(in原创 2021-05-10 12:52:38 · 481 阅读 · 0 评论 -
求指定日期的下n天。如求2020 3 23的下一n天。
先设置一个类的属性 private int year; //年 private int month; //月 private int day; //日判断是否为闰年的方法 public static boolean isLeapYear(int year) {//判断是否为闰年 if(year%400==0||(year%4==0&&year%100!=0)) ...原创 2020-03-23 21:16:07 · 375 阅读 · 0 评论 -
输入一个三位数判断是否为回文数,当这个数顺读和逆读都是一样的则为回文数。
输入一个三位数判断是否为回文数,当这个数顺读和逆读都是一样的则为回文数。输入格式:输入一个三位数输出格式:判断是否为回文数,是回文数输出yes否则输出no输入样例:在这里给出一组输入。例如:121输出样例:在这里给出相应的输出。例如:yes#include<stdio.h>int main(){ int n,a,b; scanf("%d",&n...原创 2020-03-17 11:27:40 · 7012 阅读 · 0 评论 -
求一元二次方程ax2+bx+c=0的两个根
b^2-4ac称作一元二次方程的判别式。如果它是正值,那么一元二次方程就有两个实数根。如果它为0,方程式就只有一个根。如果它是负值,方程式就无实根。编写程序,提示用户输入a、b和c的值,并显示基于判别式的结果。如果这个判别式为正,显示两个根。如果判别式为0,显示一个根。否则,显示“The equation has no real roots”(该方程式无实数根)。输入格式: 标题输入a,b,c...原创 2020-03-17 11:23:22 · 12558 阅读 · 0 评论 -
C语言编写程序,输入两个点(x1,y1)和(x2,y2),然后计算两点间的距离。提示可以使用pow和sqrt函数。
输入样例:(0,0) (1,1) 输出样例:1.41#include<stdio.h>#include<math.h>int main(){float x1,x2,y1,y2,d;scanf("(%f,%f) (%f,%f)",&x1,&y1,&x2,&y2);d=sqrt((x1-x2)(x1-x2)+(...原创 2020-01-15 16:55:27 · 11438 阅读 · 2 评论