天道酬勤,学无止境

博客

程序员面试金典 - 面试题 17.25. 单词矩阵(Trie树+DFS回溯,hard)

1. 题目 给定一份单词的清单,设计一个算法,创建由字母组成的面积最大的矩形,其中每一行组成一个单词(自左向右),每一列也组成一个单词(自上而下)。 不要求这些单词在清单里连续出现,但要求所有行等长,所有列等高。 如果有多个面积最大的矩形,输出任意一个均可。一个单词可以重复使用。 示例 1: 输入: ["this", "real", "hard", "trh", "hea", "iar", "sld"] 输出: [ "this", "real", "hard" ] 示例 2: 输入: ["aa"] 输出: ["aa","aa"] 说明: words.length <= 1000 words[i].length <= 100 数据保证单词足够随机 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/word-rectangle-lcci 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 2. 解题 类似题目:LeetCode 425. 单词方块(Trie树+DFS) 将所有单词插入Trie树将单词按长度分组,哈希map从单词长度最长组的开始遍历,对每组单词进行DFS搜索利用Trie树检查是否合法,不合法回溯有几处优化见注释,容易超时 class trie { public: bool isEnd = false

2021-06-13 06:56:07   

【面试题】已知f()函数以概率p输出1,以概率1-P输出0。要求实现g()等概率的输出1和0

思路 两次调用该RANDOM函数,如果其概率为P(x),调用2次 P(1) = p P(0) = 1-p P'(1) =p P'(0) = 1-p 概率如下: 11 p*p 10 p*(1-p) 01 (1-p)*p 00 (1-p)*(1-p) 代码: int Rand() { int i1 = rand(); int i2 = rand(); if(i1==0 && i2==1) return 1; else if(i1==1 && i2==0) return 0; else return Rand(); return -1; } 扩展 等概率生成[1, n]之间的随机数。 首先计算整数n的二进制表示所拥有的位数k,k = 1 +log2n(log以2为底n) 。 然后调用k次Rand()产生随机数。 代码 int newRand() { int result = 0; for(int i = 0 ; i < k ; ++i) { if(Rand() == 1) result |= (1<<i); } if(result > n) return newRand(); return result; } 转载自:https://www.cnblogs.com/youxin/p/3351216.html 来源:https://blog.csdn.net/iCode_girl

2021-06-13 06:56:02   

windows杀进程

windows杀进程 windows+rcmdnetstat -ano|findstr 8080taskkill /F /PID 9800 来源:https://blog.csdn.net/dongxiaomingdxm/article/details/105568279

2021-06-13 06:55:59   

解决Virtualbox和本地主机拷贝、拖拽问题

用过Virtualbox的小伙伴都知道,如果Virtualbox和本地主机无法复制、黏贴等功能,用起来可是相当不方便下面我就来分享一下我解决Virtualbox和本地主机拷贝、拖拽问题的方法 首先,在网上查询大多数的教程都是 点击设备-----共享粘贴板------拖放都设置为双向,再点击安装增强功能,这些步骤我都安照网上的教程都做了,可Virtualbox和本地主机就是不能实现相互复制、黏贴、不知道有没有小伙伴和我遇到同样的问题,下面来分享解决以上问题的方法: 在虚拟机的Linux系统里面安装工具 irtualbox-guest-x11 sudo apt-get install virtualbox-guest-x11 再把虚拟机重启一下就ok了,我Virtualbox和本地主机拷贝、拖拽问题就是这样解决的 来源:https://blog.csdn.net/weiweiweiIT/article/details/105568245

2021-06-13 06:55:55   

[剑指 offer]--字符串--面试题58 - II. 左旋转字符串

1 题目描述 字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。 示例 1: 输入: s = “abcdefg”, k = 2 输出: “cdefgab” 示例 2: 输入: s = “lrloseumgh”, k = 6 输出: “umghlrlose” 限制: 1 <= k < s.length <= 10000 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/zuo-xuan-zhuan-zi-fu-chuan-lcof 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 2 解题思路 摘自大佬的解释,大佬用了三种解法 面试题58 - II. 左旋转字符串(切片 / 列表 / 字符串,清晰图解) 这里只列举我能想到的两种吧 方法一:字符串切片 应用字符串切片函数,可方便实现左旋转字符串。 获取字符串 s[n:] 切片和 s[:n] 切片,使用 “+” 运算符拼接并返回即可。 复杂度分析: 时间复杂度 O(N) : 其中 N 为字符串 s 的长度,字符串切片函数为线性时间复杂度(参考资料); 空间复杂度 O(N) : 两个字符串切片的总长度为 N 。

2021-06-13 06:55:51   

(Java 剑指 offer)从尾到头打印链表

文章目录 一、题目 二、题解一:借助列表 二、题解二:借助栈 三、题解三:借助递归 一、题目 输入一个链表,按链表从尾到头的顺序返回一个ArrayList。 class ListNode { int val; ListNode next = null; ListNode(int val) { this.< 来源:https://blog.csdn.net/nanhuaibeian/article/details/105567910

2021-06-13 06:55:47   

运行vs提示系统资源不足,无法完成请求服务

vs运行代码提示系统资源不足,无法完成请求服务 运行环境问题解决方法 运行环境 win10+visual studio2019 问题 跑一个上周运行过且没有任何问题的代码,突然提示“系统资源不足,无法完成请求服务”。以为是后台应用太多,关掉后仍然有提示。无奈重启,重启后依然有提示且依然无法运行程序。 解决方法 关闭电脑自带杀毒软件迈克菲的实时扫描功能 关闭之后重新运行程序,成功运行且没有提示。 来源:https://blog.csdn.net/weixin_44231114/article/details/105567562

2021-06-13 06:55:42   

Win10操作系统安装MySql-8.0.12.zip

1.操作系统Win10 2.MySql版本:8.0.12 3.MySql官网: https://dev.mysql.com/downloads/mysql/ 4.百度网盘拿资料:链接:https://pan.baidu.com/s/1WAlxllujdOIcm8_BuRMbSw 提取码:kc4e 下载好 mysql-8.0.12-winx64 如下图: 5.自己编写my.ini文件,内容如下 [mysqld] # 设置3306端口 port=3306 # 设置mysql的安装目录 basedir=E:/programs/database/mysql/mysql-8.0.12-winx64 # 设置mysql数据库的数据的存放目录 datadir=E:/programs/database/mysql_data # 允许最大连接数 max_connections=200 # 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统 max_connect_errors=10 # 服务端使用的字符集默认为UTF8 character-set-server=utf8 # 创建新表时将使用的默认存储引擎 default-storage-engine=INNODB # 默认使用“mysql_native_password”插件认证 default_authentication

2021-06-13 06:55:40   

Linux学习笔记--鸟哥的Linux私房菜(全)

发生问题怎么处理 Linux自己的文件数据:/usr/share/docThe Linux Documentation Project:http://www.tldp.org/linux.vbird.org/Searching.php/var/log 日志文件酷学园讨论区phorum.study-area.org鸟哥的私房菜讨论区phorum.vbird.org Linux发行版分为两大家族 一类是RPM方式安装软件的系统,包括Red Hat、Fedora等,还有一类是dpkg方式安装软件的系统。 各硬件设备在Linux中的文件名 在Linux系统中,每个设备都被当成一个文件来对待。 几乎所有的硬件设备文件都被放在 /dev这个目录 设备设备在Linux中的文件名SCSI、SATA、USB磁盘驱动器/dev/sd[a-p]U盘/dev/sd[a-p]Virtio接口/dev/vd[a-p](用于虚拟机)打印机/dev/lp[0-2] (25针打印机) /dev/usb/lp[0-15] (USB接口)鼠标/dev/input/mouse[0-15](通用) /dev/psaux(PS/2接口) /dev/mouse(当前鼠标)CD-ROM、DVD-ROM/dev/scd[0-1] (通用) /dev/sr[0-1] (通用,CentOS较常见) /dev/cdrom(当前CD

2021-06-13 06:55:36   

左神算法进阶class2—单调栈应用:直方图中矩形的最大面积

左神算法进阶class2—单调栈应用:直方图中矩形的最大面积 1.题目:直方图中矩形的最大面积2.分析3.核心代码4.完整代码 1.题目:直方图中矩形的最大面积 给定数组{ 6,5,2,3,4 }代表直方图的高度,求矩形的最大面积,如下图所示最大面积为红色或蓝色的10 2.分析 本题可以把直方图的高视为一个杆子,杆子划过的距离的最大值为最大面积。如下图1长度为4的杆子只能在当前区域,右侧的高度为3小于4不能再向右滑动;而左侧位置越界。所以以4为高的杆子最大矩形为41 = 4。 如下图2长度为3的杆子,右侧的长度为2小于3不能再向右滑动;而左侧位置可以滑动。所以以3为高的杆子最大矩形为32 = 6。 后面每个杆子左右滑动求出最大值就为矩形最大值。本题的杆子向右侧移动,如果碰到比他小的数就停下,所以是找到比他小的数。使用单调栈栈的底侧小顶部大。如果碰到栈中的数比当前大就出栈。 整个过程如下: ①把0位置的4放入栈中 ②1位置的3小于栈顶的4,表示杆子不能向右移,4需要弹出。结算4,在栈中4的底下没有数(表示左侧位置为-1越界),而4是由于新加入位置为1的3而弹出的,表示杆子的右侧是位置1,那么杆子实际扫过的的宽度为右侧位置减左侧位置再减一1-(-1)-1 = 1;好了,杆子高度为4的矩形面积为4* 1 = 4。3进栈。 ③同理高度为3的杆子大于高度为2杆子,3出栈,结算3

2021-06-13 06:55:26