![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法与数据结构
文章平均质量分 67
奋进中的程序员
这个作者很懒,什么都没留下…
展开
-
6支队伍进行比赛,要求进行5场比赛,比赛队伍不能重复
6支队伍进行比赛,要求进行5场比赛,比赛队伍不能重复思路:固定第一支队伍不动,其他队伍循环一圈,两两队伍组队比赛package algorithm.all;public class BiSai { public static void main(String[] args) { int[] a ={1,2,3,4,5,6}; int length = a.length; for (int i = 0; i < a.length-1原创 2022-02-10 11:05:02 · 414 阅读 · 0 评论 -
算法--动态规划
1.给你一个整数 n ,对于 0 <= i <= n 中的每个 i ,计算其二进制表示中 1 的个数 ,返回一个长度为 n + 1 的数组 ans 作为答案package algorithm.dtgh;/** * @version BiTeWei.java, v 0.1 2022年01月27日 16:09 * 给你一个整数 n ,对于 0 <= i <= n 中的每个 i ,计算其二进制表示中 1 的个数 ,返回一个长度为 n + 1 的数组 ans 作为答案。.原创 2022-02-06 15:41:23 · 591 阅读 · 0 评论 -
递归算法的时间复杂度
同一道题目,同样使用递归算法,有的同学会写出了O(n)的代码,有的同学就写出了O(logn)的代码。这是为什么呢?如果对递归的时间复杂度理解的不够深入的话,就会这样!那么我通过一道简单的面试题,模拟面试的场景,来带大家逐步分析递归算法的时间复杂度,最后找出最优解,来看看同样是递归,怎么就写成了O(n)的代码。面试题:求x的n次方想一下这么简单的一道题目,代码应该如何写呢。最直观的方式应该就是,一个for循环求出结果,代码如下:intfunction1(intx,intn)...转载 2021-07-29 11:53:42 · 11867 阅读 · 3 评论 -
数组相关算法题(二)
1.数组中重复的数字在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例 1:输入:[2, 3, 1, 0, 2, 5, 3]输出:2 或 3方式一class Solution { public int findRepeatNumber(int[] nums) { int[] num = new int[nums.leng.原创 2021-07-28 17:17:36 · 167 阅读 · 0 评论 -
算法中时间复杂度和空间复杂度的计算
算法(Algorithm)是指用来操作数据、解决程序问题的一组方法。对于同一个问题,使用不同的算法,也许最终得到的结果是一样的,但在过程中消耗的资源和时间却会有很大的区别。那么我们应该如何去衡量不同算法之间的优劣呢?主要还是从算法所占用的「时间」和「空间」两个维度去考量。时间维度:是指执行当前算法所消耗的时间,我们通常用「时间复杂度」来描述。 空间维度:是指执行当前算法需要占用多少内存空间,我们通常用「空间复杂度」来描述。因此,评价一个算法的效率主要是看它的时间复杂度和空间复杂度情况。然而,原创 2021-07-28 16:17:23 · 547 阅读 · 0 评论 -
哈希表相关算法
1、两个数组的交集给定两个数组,编写一个函数来计算它们的交集。示例 1:输入:nums1 = [1,2,2,1], nums2 = [2,2]输出:[2]示例 2:输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出:[9,4]说明:输出结果中的每个元素一定是唯一的。我们可以不考虑输出结果的顺序。class Solution { public int[] intersection(int[] nums1, int[] nums2) {原创 2021-05-21 14:46:02 · 333 阅读 · 0 评论 -
链表相关算法题
链表的基础知识:什么是链表:链表是一种通过指针串联在一起的线性结构,每一个节点由两部分组成,一个是数据域一个是指针域(存放指向下一个节点的指针),最后一个节点的指针域指向null(空指针的意思)链表分为:单链表 双链表 循环链表链表的存储方式:数组是在内存中是连续分布的,但是链表在内存中可不是连续分布的。链表是通过指针域的指针链接在内存中各个节点。所以链表中的节点在内存中不是连续分布的 ,而是散乱分布在内存中的某地址上,分配机制取决于操作系统的内存管理1.移除链表元素给你一.原创 2021-05-20 11:20:15 · 124 阅读 · 0 评论 -
数组相关算法题(一)
数组相关算法题:1 二分查找给定一个n个元素有序的(升序)整型数组nums 和一个目标值target ,写一个函数搜索nums中的 target,如果目标值存在返回下标,否则返回 -1。示例 1:输入: nums = [-1,0,3,5,9,12], target = 9输出: 4解释: 9 出现在 nums 中并且下标为 4示例2:输入: nums = [-1,0,3,5,9,12], target = 2输出: -1解释: 2 不存在 nums 中因此返回 ...原创 2021-05-18 11:35:23 · 3307 阅读 · 0 评论 -
常见的时间复杂度算法
算法时间复杂度排行O(1)常数阶 < O(logn)对数阶 < O(n)线性阶 < O(n^2)平方阶 < O(n^3)(立方阶) < O(2^n) (指数阶)常见的时间复杂度举例1简单的循环,时间复杂度为O(n)for (long long i = 0; i < n; i++) { k++; } 求x的n次方 for循环int function1(int x, int n) { int result..原创 2021-05-17 16:30:20 · 3300 阅读 · 0 评论