akuna的电面题 脑子晕了没想出标算/// Permutation: all possible result of permute a list of numbers , for example [1,3,5] → [1,3,5],[1,5,3],[3,5,1],[3,1,5],[5,1,3],[5,3,1]
/// [1,1,5] -> [1,5,1], [5,1,1], [1,1,5]

可用置换的方式,从小往大推,每次都是从后往前找,如果找到一个递减的就停止,说明有上升空间。

#include<bits/stdc++.h>
using namespace std;
class Solution{int judge(vector<int>& arr){int n=arr.size();for(int i=n-2;i>=0;i--){if(arr[i]<arr[i+1]){int mark=i+1;for(int j=i+2;j<n;j++){if(arr[j]<arr[mark]&&arr[j]>arr[i])mark=j;}swap(arr[i],arr[mark]);sort(arr.begin()+i+1,arr.end());return 1;}}return 0;}public:vector<vector<int>> getAns(vector<int> a){sort(a.begin(),a.end());vector<vector<int>>res;for(;;){res.push_back(a);if(judge(a)==0)break;}return res;}
};
int main(){vector<int> input1{1,1,4};vector<int> input2{2,3,5};vector<int> input3{1,1,1,1,1,2};for(auto x:{input1,input2,input3}){Solution S;auto ans=S.getAns(x);for(auto y:ans){for(auto z:y){cout<<z<<" ";}cout<<",";}cout<<endl;}return 0;
}

也可以用dfs加上hash

#include<bits/stdc++.h>
using namespace std;
struct Solution{typedef long long ll;const static int N=1100;const static int MO=100007;map<ll,int>M;int a[N],sel[N];bool flag[N]={};vector<vector<int>>res;int hash(int x){ll sum=0;for(int i=1;i<=x;i++){sum=(sum*123+sel[i])%MO;}if(M.count(sum)==1)return 1;M[sum]++;return 0;}void dfs(int now,int n){if(now>n){vector<int> temp;for(int i=1;i<=now-1;i++)temp.push_back(sel[i]);res.push_back(temp);return;}for(int i=1;i<=n;i++){if(flag[i]==1)continue;sel[now]=a[i];if(hash(now)==1)continue;flag[i]=1;dfs(now+1,n);flag[i]=0;}}vector<vector<int>> work(vector<int> arr){int n=arr.size();for(int i=0;i<n;i++)a[i+1]=arr[i];dfs(1,n);return res;}
};
int main(){vector<int> input1{1,1,4};vector<int> input2{1,2,3};vector<int> input3{1,1,1,1,1,2};for(auto x:{input1,input2,input3}){Solution S;auto ans=S.work(x);for(auto y:ans){for(auto x:y){std::cout<<x<<" ";}cout<<",";}cout<<endl;}return 0;
}

n个独立的0-1的均匀分布,求总和<=1的概率

可以用多次积分化简之后即可,也可以用相似做,一层层往上也可化简。
最后答案1/(n!)

n个人1-n的帽子放在桌上,第一个人随机拿,后面的人依次拿,如果自己的帽子在,则拿自己的,否则 继续随机,问最后一个人拿到自己帽子的概率。

f(n)为原问题描述的答案,g(n)为第一个人的帽子不在只能随机拿,后面的人的帽子在,最后一个人拿到的概率。

f(n)=1/n+1/n*(g(1)+g(2)+…g(n-1))
g(n)=1/n+1/n*(g(1)+g(2)+…+g(n-1))
g(1)=0
g(2)=1/2
…数学归纳法g(n)=1/2
f(n)=1/2

最后答案1/2

面试非重复数字的全排列相关推荐

  1. 整数数组查找java_使用Java编写程序以查找整数数组中的第一个非重复数字?

    查找数组中的第一个非重复数字-构造count数组以将给定数组中每个元素的计数存储为相同长度,且所有元素的初始值为0. 将数组中的每个元素与除自身之外的所有其他元素进行比较. 如果匹配发生,则增加其在计 ...

  2. c语言++数组名【数字】_C ++程序在数组中打印所有非重复数字

    c语言++数组名[数字] Problem statement: Write a C++ program to print all the non-repeated numbers in an arra ...

  3. 047 Permutations II 有重复数字的全排列

    给定一个可能包含重复数字的集合,返回所有可能的不同全排列. 例如, [1,1,2] 有以下不同全排列: [   [1,1,2],   [1,2,1],   [2,1,1] ] 详见:https://l ...

  4. 回溯专题——leetcode47. Permutations II medium(有重复数字的全排列)

    1.题目描述 Given a collection of numbers, nums, that might contain duplicates, return all possible uniqu ...

  5. E. Tyler and Strings(组合计数 + 树状数组/线段树)(带重复元素的全排列)

    题目链接 主要思路还是比较好想的,一些细节公式预处理比较难搞- 参考题解 分析 从前往后遍历,如果s[]剩下的数中,s[i] < t[i]则对答案是有贡献的: 贡献就是后面位置[i+1 ~ n] ...

  6. 在数组中删除重复数字(详解)

    前言:本期是关于删除重复数字的详解,今天你c了吗? 方法: 双指针 以一组数:3 4 1 0 0 2 3 1 1 2 为例删除重复的数字 step 1:排序 使用双下标法的前提是数组有序(降序or升序 ...

  7. 包含重复数字序列的全排列Python解法

    给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列. 列: 输入:nums = [1,1,2] 输出: [[1,1,2], [1,2,1], [2,1,1]] class S ...

  8. C/C++面试之算法系列--去除数组中的重复数字

    去除数组中的重复数字 Sailor_forever  sailing_9806@163.com 转载请注明 http://blog.csdn.net/sailor_8318/archive/2008/ ...

  9. leetcode — 46. 全排列(不含重复数字)

    给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 .你可以 按任意顺序 返回答案. 示例 1: 输入:nums = [1,2,3] 输出:[[1,2,3],[1,3,2],[2,1,3 ...

  10. 46. 全排列:给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。

    题目描述 给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 .你可以 按任意顺序 返回答案. 示例 1: 输入:nums = [1,2,3] 输出:[[1,2,3],[1,3,2],[ ...

最新文章

  1. dotConnect for Oracle入门指南(四):将数据插入表
  2. 跟踪了下CSDN博客之星的竞选数据,我就看看不评论,你怎么看?
  3. Laravel 的数据库迁移
  4. 学长的求职经验 记录【就业创业信息网、求职流程、求职小细节】
  5. OOA OOD OOP
  6. 菜鸟驿站:今年双11期间全国站点将普遍延长营业时间
  7. php 判断字数,PHP实时统计中文字数和区别
  8. 今日恐慌与贪婪指数为92 贪婪程度与昨日持平
  9. Qt——P14 Lambda表达式
  10. 【前端图表】echarts散点图鼠标划过散点显示信息
  11. [转载] Java——System.exit()用法及个人理解
  12. Eureka(易瑞卡)注册中心【Zookeeper】分布式设计定理CAP
  13. How to add libraries to “External Libraries” in WebStorm/PhpStorm/Intellij
  14. android之字体阴影效果
  15. ABB电磁流量计ProcessMaster FEP630
  16. 浅谈 Spring 中的设计模式
  17. Kali Rolling Virtualbox5 SSH+Guest Addition增强包
  18. Android如何播放h.264格式视频
  19. 新手!亚马逊店铺刚下来就被封,什么原因
  20. 强势杀入汽车B2B电商王者榜的卖好车,具备怎么样的核心竞争力

热门文章

  1. 2021年,中国程序员前景一片灰暗,真的是这样吗?
  2. linux7 cve源码修复,centos7 CVE-2019-11477漏洞修复方法
  3. Macbook reset PRAM
  4. python win32com 批量加密excel 新增sheet 调整sheet顺序
  5. 方法重载和方法覆盖(重写)的区别:
  6. 计算机字节换算在线,计算机字节换算(计算机字节换算器)
  7. python 对两列互补的数据合并
  8. C语言经典问题11-牛顿法求一个数的平方根函数
  9. 提取网页内容-Python
  10. python爬虫 爬取网页图片