每日刷题系列
CLthinking
这个作者很懒,什么都没留下…
展开
-
最大公约数算法及其优化
一般求解最大公约数的两种算法,分别是辗转相除法与更相减损术。辗转相除法说的是:两个整数a,b(a比b大,下同)的最大公约数等于a%b与b的最大公约数。更相减损术说的是:两个整数a,b(a比b大,下同)的最大公约数等于a-b与b的最大公约数。下面来实现这两种算法:public class Gcd { //辗转相除法 public static int gcd1(in...原创 2019-05-20 13:38:50 · 369 阅读 · 0 评论 -
滑动窗口最大值数组
题目:有一个整形数组nums和一个大小为k的窗口,窗口从数组的最左边每次滑动一格直到最右边,返回每次窗口中的最大值。题目来源:LeetCode--239. Sliding Window Maximum原版题目:Given an arraynums, there is a sliding window of sizekwhich is moving from the very le...原创 2019-05-23 13:42:50 · 734 阅读 · 0 评论 -
单向链表的插入排序
题目:使用插入排序给单向链表排序。题目来源:LeetCode--147. Insertion Sort List原题目:Sort a linked list using insertion sort.A graphical example of insertion sort. The partial sorted list (black) initially contains on...原创 2019-05-27 20:49:02 · 705 阅读 · 0 评论 -
LeetCode--合并有序链表总结
合并两个有序的单链表为一个链表,原题目链接:LeetCode--21. 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...原创 2019-06-09 12:59:45 · 417 阅读 · 0 评论 -
LeetCode18---fourSum(可扩展自ksum)
LeetCode--184sumGiven an arraynumsofnintegers and an integertarget, are there elementsa,b,c, anddinnumssuch thata+b+c+d=target? Find all unique quadruplets in the array which gi...原创 2019-07-09 14:31:39 · 122 阅读 · 0 评论 -
二分查找进阶
我们知道在一个有序数组里面查找一个元素使用二分操作能达到Olg(n)的复杂度,但是传统的二分查找找到的元素是无法确认找的的是哪一个元素的。这么说可能比较抽象,举个例子,如果待查找的元素在有序数组中只出现了一次,那么查找到的索引肯定就是该元素出现的索引位置,如果该元素出现了多次,那么传统的二分查找是无法确定返回的索引值是具体哪一个的。传统的二分查找: public int searc...原创 2019-07-09 20:29:59 · 441 阅读 · 0 评论 -
最大的火车站台维修点
题目来源:度小满2019年秋招笔试真题题目:在Z省,有若干个个城市坐落在一条直线上,从左到右依次标号1,2,3,…,其中每个城市有一个火车站点,现今已经开放了n条火车路线,第i条火车路线是从第Yi个城市到第Xi个城市,因为Z省地势奇特,标号小的城市地势较低,所以火车是从高往低开的,再通过神秘力量传送回高地,即Yi一定大于Xi,它在沿途的所有城市都会停靠(显然不包括起点Yi,但是包括终点Xi...原创 2019-07-16 13:23:57 · 464 阅读 · 0 评论 -
Base16算法
Base16算法的Java实现版本。Base16算法就是将一串字节流转换成0-9a-f的序列。我们知道一个字节为8位,正好可以转换成两个16进制数,(高四位和低四位)。比如字节:11010011 -> 1101 0011 -> d 3public class Base16 { private static final char[] upper = "01234567...原创 2019-07-30 14:30:09 · 981 阅读 · 0 评论 -
a^b
求a的b次方对p取模的值。输入格式三个整数a,b,p,在同一行用空格隔开。输出格式输出一个整数,表示a^b mod p的值。数据范围0≤a,b,p≤109输入样例:3 2 7输出样例:2使用循环对a乘以b次当然是可以的,但是还存在着更优的解法,比如 a ^ 8 = a ^ 4 * a ^ 4,而不用这样计算 a ^ 8 = a ^ ...原创 2019-08-03 19:16:06 · 128 阅读 · 0 评论 -
64位整数乘法
求a乘b对p取模的值。输入格式第一行输入整数a,第二行输入整数b,第三行输入整数p。输出格式输出一个整数,表示a*b mod p的值。数据范围1≤a,b,p≤10^18输入样例:345输出样例:2分析:我们知道两个long相乘的话,可能会越界,所以这里显然是不能直接的相乘的。由于任意一个整数都可以表示成2机制,那么我们按照二进制将...原创 2019-08-03 19:22:42 · 536 阅读 · 0 评论 -
寻找数组中下一个更大的元素
首先定义数组中下一个更大元素:数组中某个元素下一个更大元素指的是在这个数字右边第一个大于该元素的值。例如【5,4,11,3,10】:5的下一个最大元素是11;4的下一个最大元素是11;11没有下一个最大元素;3的下一个最大元素是10;10没有下一个最大元素;题目:给你一个整型数组,返回数组中每个元素的下一个更大元素数组,如果某个元素不存在最大数组,返回-1(假设给定的数组中不存在-1)。输...原创 2019-05-27 16:11:53 · 1257 阅读 · 0 评论 -
不使用其他数据结构逆序一个栈
题目:不使用其他的数据结构反转一个栈。来源:程序员代码面试指南 P8题目就是这么的简洁,不准使用其他数据结构(栈、数组、队列啥的)逆序一个栈(原来【1,2,3,4】变成【4,3,2,1】)。分析:题目限制了不能使用其他数据结构了,所以这里肯定要使用递归了(函数的递归调用本来就是一个栈嘛)。那么使用递归的大致代码(伪代码)如下: void reverseStack(Sta...原创 2019-05-22 18:54:16 · 339 阅读 · 0 评论 -
寻找全排列的下一个数
题目:给出一个正整数数组,找出该数组按照字典序的下一个排列,如果不存在(比如:987654321)就返回该数组最小的全排列(此时返回:123456789)。原题目地址:LeetCode--31. Next Permutation原题目描述:Implementnext permutation, which rearranges numbers into the lexicographi...原创 2019-05-24 14:15:14 · 446 阅读 · 0 评论 -
最大值减去最小值小于或等于num的连续子数组数量
题目:给定数组arr和整数num,返有多少个连续子数组满足如下情况: max(arr[i...j]) - min(arr[i...j]) <= num max(arr[i...j]) 表示连续子数组arr[i...j]中的最大值,min(arr[i...j])表示连续子数组arr[i...j]中的最小值。题目来源:程序员...原创 2019-05-24 19:17:47 · 455 阅读 · 0 评论 -
数组中,一个(或者几个)数出现了k次,其余的数都出现了n次
这一系列的题目是源自于LeetCode--136. Single Number以及LeetCode--137. Single Number II和LeetCode--260. Single Number III我们先做题,然后在进行扩展。Single Number:原题目:Given anon-emptyarray of integers, every element appear...原创 2019-05-24 21:49:06 · 1031 阅读 · 1 评论 -
关于求平方的两道题
题目:实现pow(x, n)函数题目来源:LeetCode--50. Pow(x, n)原题目:Implementpow(x,n), which calculatesxraised to the powern(xn).Example 1:Input: 2.00000, 10Output: 1024.00000Example 2:Input: 2.10...原创 2019-05-25 14:31:13 · 295 阅读 · 0 评论 -
每日刷题系列---LeetCode-155. Min Stack
题目:实现一个最小栈,在实现栈的基本功能的基础上,在实现返回栈中最小元素的操作。要求:pop,push,getMin操作的时间复杂度都是O(1)。原题目:LeetCode-155.Mn StackDesign a stack that supports push, pop, top, and retrieving the minimum element in constant ti...原创 2019-05-17 12:39:50 · 96 阅读 · 0 评论 -
每日刷题系列---LeetCode-232. Implement Queue using Stacks
编写一个类,用栈来实现一个队列,支持队列的基本操作(push,pop,peek,empty)。原题目:LeetCode-232. Implement Queue using StacksImplement the following operations of a queue using stacks.push(x) -- Push element x to the back of q...原创 2019-05-17 13:06:56 · 122 阅读 · 0 评论 -
每日刷题系列---225. Implement Stack using Queues
编写一个类,用队列来实现栈,支持栈的基本操作(push,pop,peek,empty)原题目:LeetCode 225. Implement Stack using QueuesImplement the following operations of a stack using queues.push(x) -- Push element x onto stack. pop() -...原创 2019-05-17 13:33:19 · 74 阅读 · 0 评论 -
反转单向链表的两种写法(迭代、递归)
题目:反转单向链表,单向链表的定义为:public class ListNode { int val; ListNode next; public ListNode (int val) {this.val = val;}}原题目:LeetCode--206. Reverse Linked ListReverse a singly linked list....原创 2019-05-26 16:30:14 · 248 阅读 · 0 评论 -
删除k个数字后的最小值
给定一个只包含数字的字符串,要求在原字符串基础上删除k个数字后,使新字符串的数字最小。题目来源:LeetCode-402. Remove K Digits,原题目如下:Given a non-negative integernumrepresented as a string, removekdigits from the number so that the new number...原创 2019-05-22 18:30:35 · 834 阅读 · 0 评论 -
单向链表的三种排序算法---快速排序,归并排序,插入排序
给链表排序是面试中常考的一道题,今天总结一些经常链表排序的三种常用算法。分别是:快速排序、归并排序和插入排序。快速排序 数组的快速排序相必大家都烂熟于心了,很简单,就是选定一个pivot,然后将大于等于pivot的排在pivot的右边,下雨pivot的排在pivot的左边。这样pivot的最终顺序就确定好了,接下来只需要对pivot的左边和右边执行相同的过程即可。代码如下:...原创 2019-08-01 22:41:05 · 1817 阅读 · 0 评论