![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
softbreezee
java开发学习者
展开
-
多思路解决数组中重复的数字
找出数组中重复的数字在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。https://leetcode-cn.com/problems/shu-zu-zhong-zhong-fu-de-shu-zi-lcof暴力解法class Solution {...原创 2020-04-22 23:02:57 · 335 阅读 · 0 评论 -
多思路解决二维数组中的查找
二维数组中的查找在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。https://leetcode-cn.com/problems/er-wei-shu-zu-zhong-de-cha-zhao-lcof/暴力解法class Solution { ...原创 2020-04-22 23:01:25 · 143 阅读 · 0 评论 -
图的广度优先遍历
对于一个无权图G=(V,E),我们采用邻接表表示:0:1、2、5、61:02:03:4、54:3、5、65:0、3、46:0、4对于这个图,如何广度遍历呢?我们使用队列queue这个数据结构。首先,确定一个起点s(源),接下来对这个点进行操作:push进队列;同时被访问过visited[s] = truequeue:1然后,将 1 这个点pop出来,同时对 1 的邻接点i遍历,判断没有...原创 2018-05-17 21:03:25 · 465 阅读 · 0 评论 -
面试常问--归并排序
文章流程:思路——代码——分析——改进【思路】排序过程:归并说到底其实是分制的思想,每次将数组一份为二,再对左半边的数组排序,右半边的数组排序,再对这两个半边的数组进行归并。归并过程:先开辟一个数组复制要归并的两个数组,指针i,j分别指向两个数组的第一个元素。两个指针移动来进行比较,小的元素放入原来的数组。【代码】public class Main{ pu...原创 2018-09-25 16:25:16 · 675 阅读 · 0 评论 -
面试常问--快速排序
文章流程:思路——代码——分析——改进【思路】排序过程:快排是制分的思路,首先将一个随机的元素放在数组中本该存在的位置,然后将小于该元素的放在左面,大于该元素的放在右面。partition过程:对于数组[l...r]每次选取最左面的元素arr[l],声名两个指针i,j,i用于遍历数组,j用于存放小于arr[l]的元素,范围是[l+1...j]。 【代码】pub...原创 2018-09-25 21:26:22 · 625 阅读 · 0 评论 -
面试常问--堆排序
文章流程:思路——代码——分析——改进【思路】堆排序有两种,一种利用堆的特性,先构建最大堆,每次得到最大堆的堆顶元素;另一种是直接原地使用堆排序。原地堆排序:将数组构建成堆,交换数组的第一个元素和最后一个元素。依次对除去最后的元素的剩下数组进行排序。【代码】原地排序:public class Main{ public static void ma...原创 2018-09-25 23:01:07 · 903 阅读 · 0 评论