算法
文章平均质量分 65
算法题整理
DooDia
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
链表相关算法(翻转,k个翻转)
链表相关算法(翻转,k个翻转)链表结构反转链表思路代码K个反转(不足K不反转)思想 之前在leetcode上刷题的时候碰到链表的题目就会有一点绕,这里整理一下。 链表结构 首先统一一下链表的结构 struct ListNode { int val; struct ListNode *next; }; 反转链表 思路 定义三个Node,分别是pre,cur,next,用于保存上一个Node,本Node以及下一个Node, 这里的pre实际上就是我们的反转链表的头节点。想法就是遍历链表,每一次原创 2021-03-24 08:22:51 · 197 阅读 · 0 评论 -
关于算法的边界问题
关于算法的边界问题二分查找 有很多算法思路很简单,但是具体要实现的时候总会碰到一些麻烦的边界问题,这边整理一下。 二分查找 思路不用多说,先贴一种可行的代码 int binarySearch(vector<int> nums,int tar){ // 第一个边界 int l = 0, r = nums.size()-1; // 第二个边界 while(l<=r){ int m = (l + r)/2; if(nums[m] == tar) return m;原创 2021-03-20 03:24:10 · 1750 阅读 · 1 评论 -
排序算法整理
排序算法整理项目地址选择排序复杂度分析 今天面试的时候问了归并和快排,没有讲得太清楚,掌握地不太熟练,不能太依赖sort函数,所以自己整理一下。 项目地址 github 选择排序 目前的想法看来这个是最简单的排序了,我叫他笨蛋法。思想就是遍历数组,把最小的放在最前面,然后再后移一位遍历剩下的数组,找出剩下的最小的放在第二位,一直到最大的放在最后一位。 #include "selectSort.h" #include <iostream> int main(){ std::vec原创 2021-03-19 09:00:53 · 197 阅读 · 0 评论 -
阿里笔试题:或运算的最小翻转次数 C++
阿里笔试题:或运算的最小翻转次数 C++题目描述输入输出示例解题思路代码 题目描述 给出一个数字n,表示有n组输入用例子,每一组输入给出三个正整数a、b、c,可以对a和b进行位翻转操作,每一次操作可以翻转a或b的某一位,比如0010操作一次可以得到0011,求使得 a∣b=ca|b=ca∣b=c 成立的最小操作次数。∣|∣ 表示按位或操作。 输入输出示例 输入: 1 2,6,5 输出: 3 解释: a = 0010,b = 0110,c = 0101 对最低位进行一次翻转操作,对a和b第二位各进行一次翻转操原创 2021-03-15 22:43:46 · 304 阅读 · 0 评论 -
算法第一篇:N皇后问题的回溯解法 C++实现
算法第一篇:N皇后问题的回溯解法 C++实现题目来源问题描述问题思路运行结果总结 题目来源 牛客网-N皇后问题 问题描述 N皇后问题是指在N∗N的棋盘上摆N个皇后 要求:任何两个皇后不同行,不同列也不再同一条斜线上 返回:一个整数N,返回N皇后的摆法数 问题思路 本人能力有限只能想到用回溯法求解,回溯法的思想和和暴力穷举类似,但不同的是回溯法设置了中止结果,当运行到某一步发现不可行的时候就会回退一步,从而减少了开销。就像走迷宫,记录每一个岔口,当我发现某条路前面的路不通时,就返回上一个岔口选择另一条路,原创 2021-03-15 03:14:35 · 1601 阅读 · 0 评论
分享