算法
文章平均质量分 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 · 116 阅读 · 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 · 1490 阅读 · 1 评论 -
排序算法整理
排序算法整理项目地址选择排序复杂度分析 今天面试的时候问了归并和快排,没有讲得太清楚,掌握地不太熟练,不能太依赖sort函数,所以自己整理一下。项目地址github选择排序 目前的想法看来这个是最简单的排序了,我叫他笨蛋法。思想就是遍历数组,把最小的放在最前面,然后再后移一位遍历剩下的数组,找出剩下的最小的放在第二位,一直到最大的放在最后一位。#include "selectSort.h"#include <iostream>int main(){ std::vec原创 2021-03-19 09:00:53 · 88 阅读 · 0 评论 -
阿里笔试题:或运算的最小翻转次数 C++
阿里笔试题:或运算的最小翻转次数 C++题目描述输入输出示例解题思路代码题目描述给出一个数字n,表示有n组输入用例子,每一组输入给出三个正整数a、b、c,可以对a和b进行位翻转操作,每一次操作可以翻转a或b的某一位,比如0010操作一次可以得到0011,求使得 a∣b=ca|b=ca∣b=c 成立的最小操作次数。∣|∣ 表示按位或操作。输入输出示例输入:12,6,5输出:3解释:a = 0010,b = 0110,c = 0101对最低位进行一次翻转操作,对a和b第二位各进行一次翻转操原创 2021-03-15 22:43:46 · 195 阅读 · 0 评论 -
算法第一篇:N皇后问题的回溯解法 C++实现
算法第一篇:N皇后问题的回溯解法 C++实现题目来源问题描述问题思路运行结果总结题目来源牛客网-N皇后问题问题描述N皇后问题是指在N∗N的棋盘上摆N个皇后要求:任何两个皇后不同行,不同列也不再同一条斜线上返回:一个整数N,返回N皇后的摆法数问题思路 本人能力有限只能想到用回溯法求解,回溯法的思想和和暴力穷举类似,但不同的是回溯法设置了中止结果,当运行到某一步发现不可行的时候就会回退一步,从而减少了开销。就像走迷宫,记录每一个岔口,当我发现某条路前面的路不通时,就返回上一个岔口选择另一条路,原创 2021-03-15 03:14:35 · 1300 阅读 · 0 评论