算法训练
leetcode/牛客/杭电oj
爱读书的小寿星
真正的高贵是优于过去的自己
展开
-
链表学习2-C/C++2019.11.8
数据结构开作业和实验了,我觉得这些题目挺好的,可以加深自己对链表的理解,故整理出来。编译器说明:Dev-C++5.11题目来自《数据结构(C语言版)严蔚敏、吴伟民习题集》/** 题目2.11* 设顺序表va中的数据元素递增有序。试写一算法,将x插入到顺序表的适当位置上,以保持该表的有序性*/#include<iostream>#includ...原创 2019-11-08 23:13:09 · 535 阅读 · 0 评论 -
剑指offer刷题记录——始于19.9.8
接下来这段日子,会给自己定个小目标,每天都能尝试刷几道题,并记录。但每天都能把刷过的题目写在博客里记录下来不是硬性要求,需要对题目有深刻的分析和思维过程的剖析。不会这么及时记录和更新。从小白到大牛,从来都不是一蹴而就的,而是一个脚印一个脚印踩过来的。 学习算法,终究是有好处的,不仅是为了应对招聘时的线上题抑或是面试题,而且最主要的是它能训练自己的思维和态度:严谨,...原创 2019-09-09 23:31:04 · 226 阅读 · 0 评论 -
替换空格19.9.9
//replace是java中String的方法,//注意返回值类型和参数类型不一致code:javapublic class Solution { public String replaceSpace(StringBuffer str) { String str1 = str.toString(); str1 = str1.replace("...原创 2019-09-10 16:49:31 · 148 阅读 · 0 评论 -
twoStack19.9.9
题目:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型第一步:回顾栈和队列栈:size()top() //返回值,不删除pop() //删除push()empty()队列:size()pop()//删除,不返回push()front() //返回头部,不删除back() //返回尾部,不删除Code:C...原创 2019-09-10 16:54:56 · 267 阅读 · 0 评论 -
深入斐波那契类型问题19.9.10
1.题目描述I 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)1.1解题思路 这和斐波那契数列是同一个思想,可以倒过来看:我要走完n层,我有两种方式,在n-1层走1步或者n-2层走2步。依次往下推导可得到这样一个表达式:f(n) = f(n-1)+f(n-2);但是作为递归,...原创 2019-09-21 16:20:47 · 319 阅读 · 0 评论 -
快速排序quickSort的深入学习-19.9.8-13
梳理:荷兰国旗问题+快排一、题目1:给定一个num,把一个数组小于等于num的放在左边,大于num的放在右边,返回分界点。package Algothrims;public class heLangFlag { static int arr[]= {4,7,8,3,6,2,1,9,10,5}; public static voi...原创 2019-09-13 13:39:28 · 224 阅读 · 0 评论 -
旋转数组的最小数字+堆排介绍19.9.14
题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0时间限制:3秒空间限制:32768K最差的方式就是遍历,得到最小的值——>时间复杂度为O(...原创 2019-09-14 18:57:03 · 225 阅读 · 0 评论 -
搜索旋转排序数组19.9.14-15
搜索旋转排序数组I ——leetcode 33题目描述:(难度中等)假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组[0,1,2,4,5,6,7]可能变为[4,5,6,7,0,1,2])。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回-1。你可以假设数组中不存在重复的元素。你的算法时间复杂度必须是O(logn) ...原创 2019-09-15 16:10:07 · 292 阅读 · 0 评论 -
链表学习1-java篇19.9.16-9.17
这几天老是看到链表的题目,不是链表的反转,就是链表求和……必须把它攻克了,不然题目都刷不了了,所以这两天一直在找相关资料,所以没有刷很太多题。 为了靠自己不看题解地去实现链表的反转打印这题以及后期的链表题目。我不断反思自己为什么对链表有点害怕,甚至不敢开始学习链表的知识,最后我总结如下: 大一的时候学C语言的时候感觉链表怎么这么长,被长度给下住了。代码一长也就意味着...原创 2019-09-17 23:15:17 · 195 阅读 · 0 评论 -
剑指offer-leetcode刷题总结(一)19.9.8-9.21
目录剑指offer普通题:2019/9/8: 二维数组查找2019/9/8: 替换空格2019/9/9: smallRotateNum2019/9/9: 斐波那契系列2019/9/9: twoStack2019/9/11: 二进制中1的个数剑指offer链表题:2019/9/20: 从尾到头打印链表2019/9/20: 链表反转2019...原创 2019-09-21 20:48:09 · 1163 阅读 · 0 评论 -
两数相加 19.9.18
题目描述 给出两个非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)...原创 2019-09-21 15:34:11 · 413 阅读 · 0 评论 -
链表反转问题重新总结 20.1.27
题目:输入一个链表,反转链表后,反向打印链表第一种 非递归——借用栈来实现逆序/*** public class ListNode {* int val;* ListNode next = null;** ListNode(int val) {* this.val = val;* ...原创 2019-09-21 16:07:38 · 212 阅读 · 0 评论 -
合并两个排序的链表19.21
题目描述输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。解题过程:遇到链表题,老是会有抠边界的问题,临场思路要是不清晰就会出问题,就这个问题,我做了以下的总结:第1步:审清题目:合并后是有序的,而且两个链表本身也是有序的第2步:在边界上抠不清楚,代码冗余度很高,分块处理: 1)把特殊情况拎出来先处理,像个数...原创 2019-09-21 16:19:59 · 184 阅读 · 0 评论 -
调整顺组顺序使奇数位于偶数前面19.9.21
1题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。题解第一种思路:先把奇偶分拣出来,再整合回去,还要保证奇奇之间顺序一致,偶偶之间顺序一致,这样队列结构符合,但这种的缺陷是空间复杂度高java中:LinkedListadd()添加元素poll()...原创 2019-09-24 20:45:16 · 216 阅读 · 0 评论 -
链表中倒数第K个结点19.9.23
目录题目描述题解第一种第二种第三种题目描述输入一个链表,输出该链表中倒数第k个结点题解第一种这题有很多的想法,我最初想到的是先获取链表的长度,然后根据前后的关系,从前往后遍历,遍历到指定点时,返回该结点。代码如下:/*public class ListNode { int val; ListNode next = null; ...原创 2019-09-24 20:59:45 · 394 阅读 · 1 评论 -
Leetcode287
题目 Leetcode287给定一个包含n + 1 个整数的数组nums,其数字都在 1 到 n之间(包括 1 和 n),可知至少存在一个重复的整数。假设只有一个重复的整数,找出这个重复的数。示例 1:输入: [1,3,4,2,2]输出: 2示例 2:输入: [3,1,3,4,2]输出: 3说明:不能更改原数组(假设数组是只读的)。只能使...原创 2019-10-03 20:27:30 · 975 阅读 · 0 评论 -
二维数组查找19.9.8
首先是两种思路:① 假设数组是M*N的,每一行用二分搜索,这样最坏的时间复杂度就是M*Log2N,但这种方法只用到了一个条件:从左到右有序。并不是题目希望我们的方法② 二分思想,从左下开始遍历,或者从右上开始遍历,这样最坏的时间复杂度就是O(n),下面的代码按照左下开始:(注意:提交时一直提示段错误,思考了很久才发现,对于下面第一种代码,要先判断数组是否存在,)class So...原创 2019-09-09 15:38:27 · 171 阅读 · 0 评论 -
TwoSum-Leetcode
twoSum问题/***给定 nums = [2, 7, 11, 15], target = 9*因为 nums[0] + nums[1] = 2 + 7 = 9*所以返回 [0, 1]*/通过这题了解了HashMap,boolean containsKey(object key)用来检查map中是否包含要查询的key的信息boolean containsValue...原创 2019-08-01 10:15:58 · 130 阅读 · 0 评论 -
回溯法八皇后问题易理解
容易理解回溯法的内涵:#include<iostream>#include<math.h>using namespace std;int n=8;int total=0; //解法个数int *c=new int(n); //存储当前的colbool is_ok(int row){ for(int j=0;j!=row;...转载 2019-03-02 16:28:18 · 211 阅读 · 0 评论