![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
刷题记录
s_海棠依旧
守的住寂寞,方撑的起繁华。
展开
-
java查找字符串中出现频率最高的字符
java查找字符串中出现频率最高的字符原创 2021-04-25 21:52:16 · 768 阅读 · 0 评论 -
Leetcode 14:最长公共前缀
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入:strs = ["flower","flow","flight"]输出:"fl"原创 2021-04-25 21:36:04 · 84 阅读 · 0 评论 -
Python递归实现快速排序
快速排序由C. A. R. Hoare在1960年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。#快速排序def quick_sort(rank,left,right): """ 快速排序思想: 先找一个基准值,比如找最左边的第一个为基准值,开始从右往左变了,如果有比基准值小的,那么就和基准值交换位置,原创 2021-03-18 13:58:46 · 1020 阅读 · 3 评论 -
冒泡排序及时间复杂度
冒泡排序思想: 以从小到大排序举例。每一轮比较第n个值和第n+1个值的大小,如果num[n]大于num[n+1],那么交换这两个值;总共需要进行n-1次比较。public static int[] bubble(int[] num) { int temp; //最多需要进行n-1轮 for (int i = 1; i < num.length; i++) { //每轮都会冒出一个值,所以比较num.length-i次即可原创 2021-04-06 14:31:09 · 4664 阅读 · 1 评论 -
斐波那契数列
LeetCode第509题:斐波那契数,通常用 F(n) 表示,形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:F(0) = 0,F(1) = 1F(n) = F(n - 1) + F(n - 2),其中 n > 1给你 n ,请计算 F(n) 。解法一: 递归。public int fib(int n) { if(n<2){ return n; } //递原创 2021-04-06 14:48:53 · 102 阅读 · 0 评论 -
选择排序及时间复杂度
选择排序思想: 以从小到大排序为例,每一轮以第1个未排序的数作为最小值,记下下标,和后面的值依次进行比较,若后面的值比最小值小,那么更新最小值的下标,直到这轮比较完,会找到一个最小值,然后将最小值和第一个数进行值交换。下一轮以第2个数为最小值的下标,进行比较。总共需要n-1次比较。public static int[] select(int[] num){ int min; int temp; for(int i=0;i<num.length-1;i+原创 2021-04-06 15:44:31 · 7730 阅读 · 0 评论 -
快速排序及时间复杂度和空间复杂度
快速排序思想: 快排的核心是递归。以从小到大排序为例,把第一个值作为基准值,先从最右边进行比较,若比基准值大,那么右边的指针左移一位,如果比基准值大,那么交换基准值和当前位置的值,改变比较方向,开始从最左边开始比较,若比基准值小,那么左边的指针右移一位,如果比基准值大,那么交换基准值和当前位置的值。每一轮的结果是基准被放在了正确的位置上,左边的指针位置等于右边的指针位置。此时数组被一分为二,左边的数都比基准值小,右边的值都比基准值大。分别对左边和右边的数使用递归做重复的操作。递归的出口 是左边只剩下一个值,原创 2021-04-06 16:51:16 · 9770 阅读 · 0 评论 -
LeetCode:剑指offer53-II,找到缺失的数(有序数组)
题目:一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。分析:二分法适用于已经排好序的数组的查找。所以这个题目中我们使用二分法进行查找。先将数组一分为二,将中间下标数组的值和下标进行比较,如果数组的值大于下标的值,说明在左边缺少一个数,那么从左边继续二分查找,直到左指针等于右指针;如果数组的值等于下标的值,说明右边缺少一个数,从右边进行二分查找。代码片段:public int miss原创 2021-04-15 23:43:35 · 672 阅读 · 0 评论 -
数组去重后输出(无序数组)
题目:已知有一个无序的数组中存在重复的元素,要求去掉重复元素后输出新数组。分析:set中的元素是不能重复的。所以我们可以先判断set中有没有该元素,如果没有就进行添加到set中,直到遍历完所有数组元素,最后set输出为数组,使用set的toArray方法,可以将set转为数组存储。代码片段:public static Object[] remove(int[] nums){ Set<Integer> set=new HashSet<>(); f原创 2021-04-16 00:02:07 · 511 阅读 · 0 评论 -
java反转字符串
反转字符串的问题,经常会遇到。将给定的字符串,反转后进行返回。原创 2021-04-25 11:36:55 · 106 阅读 · 0 评论 -
Leetcode 136:只出现一次的数字java
题目 :给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。原创 2021-04-25 12:42:53 · 69 阅读 · 0 评论 -
Leetcode 169:多数元素(java)
题目:给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。原创 2021-04-25 20:45:16 · 78 阅读 · 0 评论 -
Leetcode 1:两数之和(java)
题目:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。原创 2021-04-25 21:02:09 · 77 阅读 · 0 评论