OmniParser技术分析(一) 官方针对图片字符识别推荐使用的是paddle_ocr,猜测原因应该是效果不错 + 开源,接下来介绍下paddle_ocr基本使用。图标检测模型是OmniParser-v2的基础组件之一,主要负责从屏幕截图中识别并定位可交互的UI元素,如按钮、输入框等。该模型经过大规模数据集训练,能够检测最小至8×8像素的元素,确保在各种分辨率和界面复杂度下都能准确识别。
Python 字典对value进行排序 Python排序使用sorted函数进行,该函数有三个参数分别是iterable,key,reverse。(1)key使用lambda匿名函数取value进行排序
LeetCode刷题 2.两数相加 题目要求:给出两个非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807思路:我们同时遍历两个链表,逐位计算它们的和,...
LeetCode刷题 面试题39.数组中出现次数超过一半的数字 题目要求:在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。分析:使用归并排序中分治思想,先将数组中数字递归划分,然后再合并进行排序同时统计逆序数。class Solution {public: int reverseCount = 0; int reversePairs(vector<int>& nums) { if(nums.empty())
LeetCode刷题 面试题53-I.在排序数组中查找数字 I 题目要求:统计一个数字在排序数组中出现的次数。分析:可以使用关联容器,时间复杂度是O(n),空间复杂度是O(1)int search(vector<int>& nums, int target) { unordered_map<int,int> um; for(int n:nums) { if(n == target) um[n]++; } ret
LeetCode刷题 136.只出现一次的数字 题目要求:给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?分析:可以使用关联容器去记录每一个元素出现的次数,也可以使用set去记录,如果集合中不存在这个数,那么就加入;如果集合中存在这个数,那么就删除这个数,那么最后就剩下出现过一次的数字。这两种方法都不满足要求,我们可以使用异或的方法,一个数和0异或结果是这个数;一个数和自己异或的结果是0,所以最后的结果是出现一次的那个数
LeetCode刷题 面试题39.数组中出现次数超过一半的数字 题目要求:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。你可以假设数组是非空的,并且给定的数组总是存在多数元素。分析:可以使用unordered_map记录一个数字出现的次数,之后遍历容器寻找出现次数超过一半的数字。int majorityElement(vector<int>& nums) { int count = nums.size()/2; unordered_map<int,int> um; .
LeetCode刷题 面试题21.调整数组顺序使奇数位于偶数前面 题目要求:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。分析:题目要求将奇数放在前面,偶数放在后半部分,可以使用双向队列,奇数前插入,偶数后插入。vector<int> exchange(vector<int>& nums) { deque<int> result; int len = nums.size(); for(int i=0;i
LeetCode刷题 面试题04.二维数组中的查找 题目要求:在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。分析:查找问题,有特点是每一行都按照从左到右递增,每一列都按照从上到下递增,利用这个特性,可以从右上角开始查找,直到左下角。 bool findNumberIn2DArray(vector<vector<int>>& matrix, int target) {
Linux常考察的命令 前言这里不再写Linux最常用的命令,主要记录一个比较常考的完成某种功能的命令!1、找出指定端口被哪个进程占用-★★lsof -i:端口号 例如查看80端口被哪个进程所占用:lsof -i:802、命令行里重置一下网络-★service network restart3、查看一个动态变化的文件用什么?-★tail -n 10 test.log4、linux查找某个字母开头的进程并全部杀死-★杀死以字母a开头的进程为例:kill -9 $(pgrep '^a'
牛客网SQL刷题 创建一个actor_name表 题目要求:对于如下表actor,其对应的数据为:actor_id first_name last_name last_update 1 PENELOPE GUINESS 2006-02-15 12:34:33 2 NICK WAHLBERG 2006-02-15 12:34:33 请你创建一个actor_name表,并且将actor表中的所有first_name以及last_name导入该表.actor_name表结构如下:.
牛客网SQL刷题 查找employees表 题目要求:查找employees表所有emp_no为奇数,且last_name不为Mary(注意大小写)的员工信息,并按照hire_date逆序排列(题目不能使用mod函数)CREATE TABLE `employees` (`emp_no` int(11) NOT NULL,`birth_date` date NOT NULL,`first_name` varchar(14) NOT NULL,`last_name` varchar(16) NOT NULL,`gender` char(1)
牛客网SQL刷题 获取所有部门中当前员工薪水最高的相关信息 题目要求:获取所有部门中当前(dept_emp.to_date = '9999-01-01')员工薪水最高的相关信息,给出dept_no, emp_no以及其对应的salaryCREATE TABLE `dept_emp` (`emp_no` int(11) NOT NULL,`dept_no` char(4) NOT NULL,`from_date` date NOT NULL,`to_date` date NOT NULL,PRIMARY KEY (`emp_no`,`dept_no`));
LeetCode刷题 19.删除链表的倒数第N个节点★ 题目要求:给定一个链表,删除链表的倒数第n个节点,并且返回链表的头结点。说明:给定的n保证是有效的。分析:可以使用前面寻找倒数第K个节点的方法,但是找到之后还要找到倒数第K-1个节点;注意边界条件,删除的节点是头节点的时候还有只有一个节点的时候!class Solution {public: ListNode* removeNthFromEnd(ListNode* head, int n) { if(!head) return NU...
LeetCode刷题 328.奇偶链表 题目要求:给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节点总数。分析:将链表分为奇数链表和偶数链表,最后将偶数链表连接到奇数链表之后,注意边界条件。class Solution {public: ListNode* oddEvenList(ListNode* head) {
LeetCode刷题 110.平衡二叉树★ 题目要求:给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点的左右两个子树的高度差的绝对值不超过1。分析:递归+递归,一个函数求结点的左右子树差值,另一个函数判断左右子树的深度;都要递归求取,每个结点都要判断是否是平衡的,每个结点都要求深度!class Solution {public: bool isBalanced(TreeNode* root) { if(!root) return tru.
LeetCode刷题 1.两数之和★ 题目要求:给定一个整数数组 nums和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。分析:这个题目中,没有说明数组中数据是有序的,所以不能使用双指针方法。方法1:BFvector<int> twoSum(vector<int>& nums, int target) { vector<int> res; ...