自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(61)
  • 资源 (1)
  • 收藏
  • 关注

原创 LeetCode55题:跳跃游戏(原创)

递归算法比较简单,但会有重复计算的陷阱,之前动态规划算法里也提到过了;

2024-04-15 12:22:12 901

转载 呆伯特法则-“有关管理的一切都是扯X”

你和呆伯特的最大共鸣,就是“有关管理的一切都是扯X”从1989年到现在,斯科特·亚当斯已经绘制了近9000幅呆伯特(Dilbert)系列漫画。他对管理、老板以及办公室“格子间”文化的讽刺性描绘,展现了当代人对职场的态度。

2024-04-11 10:50:55 10

原创 LeetCode-2529题:正整数和负整数的最大计数(原创)

按照大神Donald Knuth所说“思路很简单,细节是魔鬼”,二分查找算法需要特别关注前后索引值这些细节方面。第一篇二分搜索论文是 1946 年发表,然而第一个没有 bug 的二分查找法却是在 1962 年才出现,中间用了 16 年的时间

2024-04-10 10:05:06 918

原创 LeetCode-1669题:合并两个链表(原创)

链表操作要注意首节点保存和尾节点的获取与保存所有链表操作基本上都是对三个变量的操作:当前节点curNode,上一节点preNode,下一节点nexyNode;链表遍历时对不停地更新上面三个变量LeetCode解题之前,一定不要看题解,看了就“破功”了!

2024-03-24 14:01:10 918

原创 LeetCode-60题:排列序列解法三(原创)

这里还有一个优化点:交换之后的数组,绝对是一个递减数组,将其变为最小的数,不需要复杂的排序,只要将这一段数字进行倒序排列即可!

2024-03-23 20:53:17 286

原创 LeetCode-60题:排列序列解法二(原创)

算法实现精要:每个数字排列的下一个排列:就是从倒数第二个数字开始,往后找到比此数大的数字,两者进行交换,然后再将后面的数字进行排序即可,找不到的话序号向前推进。。。;算法实现最好能精益求精,不可浅尝辄止,温故而知新比做新的算法题可能收获更大;一定要有自己的原创算法思想,不能一味按照公式去套,那样的话就只是机械的应试刷题,没有自己的灵魂!没有自己的思想!LeetCode解题之前,一定不要看题解,看了就“破功”了!

2024-03-20 14:20:19 1090 1

原创 LeetCode-60题:排列序列解法一(原创)

这道题关键的难点在于递归回溯的数字选取上;反复调试代码,查看生成过程,可以清晰的看出整个1-K个序列,每个数字的生成过程

2024-03-20 12:13:20 803

原创 LeetCode-17题:电话号码的字母组合(原创)

要掌握回溯算法的思想和实现,此类问题就能迎刃而解:“回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。这种走不通就退回再走的技术为回溯法,所以也经常称作试探法对于此类问题”这一题另外一个关键需要计算数字数值和所有映射的字母之间的数值关系,我自己发现的公式:char c2 = (char) ('a' + (c1 - '2') * 3 + delta + i);

2024-03-17 12:11:29 718

原创 LeetCode-337题:打家劫舍III(原创)

递归函数存在大量重复调用的情况,可以考虑设计一个缓存来存储已经计算好的节点,这样能大大提高算法性能

2024-03-13 16:38:24 994

原创 LeetCode-213题:打家劫舍II(原创)

本题的关键点就在于:由于首尾相连,0和N-1的房屋不可能重复抢劫,因此就是按照198题的思路求0到N-2,以及1到N-1分成两批抢劫处理,然后再求出两者最大金额即可

2024-03-13 15:07:43 1000

原创 LeetCode-198题:打家劫舍(原创)

本题的关键点就在于“如果不偷当前房屋,上一间房屋可偷可不偷,问题答案就等于上一间房屋偷或不偷两种情况的最大金额;如果偷取当前房屋,上一间房屋则不可偷,问题答案等于当前房屋金额加上上一间房屋的最大金额”

2024-03-13 14:49:12 924

原创 LeetCode-92题: 反转链表 II(原创)

​这道题就是链表翻转的通用版本. - 力扣(LeetCode),即常见的链表翻转是将长度为n的链表从位置1到位置n的节点进行翻转。把这个算法改写成为通用的链表翻转算法即可,即链表中间一段按通用的翻转算法将左位置到右位置下一节点(左开右闭)这一段节点进行翻转,最后将左位置前一节点指向翻转后的一段链表表的首节点(即右位置)即可​

2024-03-11 15:10:33 799

原创 LeetCode-102.题: 二叉树的层序遍历(原创)

这道理的关键点在于“自顶向下,一层接一层交替访问树节点”;算法设计时,可以考虑最简单的情况,试探思考其运行逻辑应该是什么样的还是要有精细化的逻辑思维,层次分明,这样在复杂的逻辑也不会乱;

2024-03-08 18:54:53 624

原创 LeetCode-1944题: 队列中可以看到的人数(原创)

这道题算法设计的关键点在于使用堆栈:以及保存当前位置右侧所有的“一山还比一山高”的身高;

2024-03-08 15:25:39 752

原创 LeetCode-91题:解码方法(原创)

对于此类问题,“动态规划”是王道,递归方式容易思考,但是存在大量的重复计算,性能远远和动态规划无法相比;

2024-03-07 10:14:40 1079

原创 LeetCode-22题:括号生成(原创)

掌握“回溯”:回溯算法也叫试探法,它是一种系统地搜索问题的解的方法。回溯算法的基本思想是:从一条路往前走,能进则进,不能进则退回来,换一条路再试

2024-03-06 14:53:34 892

原创 LeetCode-122题: 买卖股票的最佳时机 II(原创)

动态规划的思想就是将人们正常的跳跃性和跨越性思维,转换成计算机的一步一个脚印,只看眼前路的思维方式

2024-03-02 10:12:33 338

原创 LeetCode-121题: 买卖股票的最佳时机(原创)

动态规划算法是数据结构中一个很重要的算法,另外一般学校里教的都很浅薄,程序员一定要自学掌握其算法脉络,并能学会灵活运用;

2024-02-29 09:32:02 440

原创 LeetCode-4题:寻找两个正序数组的中位数(原创)

归并算法是数据结构排序算法中一个很重要的算法,归并排序非常稳定,时间复杂度始终都是 N*logN,另外除了常规的数组排序之外,很多场景都可以应用到,比如笔者以前做过的远程和本地文件夹同步算法,就是两边文件名称数组,进行归并比较处理,大家要掌握这个算法思路以及应用技巧;

2024-02-25 08:54:13 939

原创 Text2Sql研究(二)- 大模型测试对比结果

我们就对市面各个商业大模型做了SQL生成测试对比,我们挑选了9个问题,并针对千帆Qianfan-Chinese-Llama-2-13B、SQLCoder-34B-Beta、通义千问-Max、讯飞星火-3.5、智普GLM-4做了测试结果分别如下:千帆Qianfan-Chinese-Llama-2-13B:6错3对,回答非常啰嗦,准确性不高;SQLCoder-34B-Beta:8错1对,返回SQL存在Oracle方言问题,且无法通过prompt解决通义千问-Max:9题全错,无论如何更换question,

2024-02-22 09:18:42 1089

原创 LeetCode-57题:插入区间(原创)

逻辑思维,逻辑思维,逻辑思维,重要的事情说三遍,算法处理一定要相关业务逻辑上想清楚;

2024-02-16 13:13:37 950

原创 Text2SQL研究(一)-Chat2DB体验与剖析

Chat2DB案例测试与原理剖析

2024-02-07 15:15:31 1866

原创 LeetCode-208题:实现Tire前缀树(原创)

前缀树对外提供的功能函数,要根据代码执行逻辑,找到其共性点,设计好内部通用函数,一旦内部通用函数设计好,公共的功能函数只需要在此基础上进行封装即可,达到最大的代码复用,并通过这种“正交性”分解,降解了程序的复杂性

2024-01-21 11:54:24 1013

原创 LeetCode-25题: K 个一组翻转链表(原创)

1)首先要对复杂问题分解:再复杂的问题像“”庖丁解牛“”一样,找到其中脉络,进行分解之后,都会被切割成简单的个体小单元,很容易理解和掌握。2)要学会“”依此类推“”的思路:算法的解决大数据问题基本都是找出其中规律,进行重复性操作。

2024-01-01 09:18:53 543

原创 《人件》——读书笔记

《人件》读书笔记,推进大家阅读次数

2023-08-28 15:09:40 112

转载 为什么我觉得北京没有大家说的那么繁华?

因为路网密度太低。北京是“宽马路、疏路网”;而东京、纽约、香港是“窄马路、密路网”,后者利于微循环打通,利于商业繁荣、提升资本渗透率。下图为同一比例尺下北京路网和纽约东京对比。同一比例尺下:北京路网密度对比纽约(图中蓝色的是公共通路。有人质疑,明明有路但地图里没有,那是因为这是属于小区、大型建筑封闭私路或机关单位内部道路,外人进不去)同一比例尺下:北京路网密度对比东京两种城市类型对比:苏联规划理念:西欧规划理念西柏林:东柏林封闭式、集中式 VS 开放式、分布式。

2023-05-18 15:02:49 397

原创 一天一定律:吉尔布定律

吉尔布定律

2023-05-08 14:45:17 79

原创 “流动车位”-智能RPA任务调度算法

整个算法思路打个比方:各个Woker好比车库,不同的类型的RPA任务好比不同的车位(电瓶车位、小轿车车位,大巴车位),并为领导和客户预留了一些专用车位,最后专用车位根据运行状态在车库中动态分配,故此算法命名为“动态车位”-智能RPA任务调度算法。4) Master接受各种动态触发器发来的RPA任务,按照不同类型批量进行调度:根据各Worker当前使用资源以及最大可用资源进行动态调度,5)另外为手动调度的不同RPA程序预留相应的资源数量,最后剩余资源所在的Worker停止接受此类任务。

2023-04-18 21:38:43 190

原创 数字员工开发系统领域模型分析

数字员工领域模型分析

2023-01-18 17:21:56 175

原创 数字员工之“哑铃理论”

数字员工之“哑铃理论”

2023-01-04 11:14:48 117

原创 Apache DolphinScheduler3.0源码剖析

DolphinScheduler3.0关键过程代码剖析

2022-09-11 21:51:43 852

原创 RPA三大类机器人总结

2.无头浏览器机器人:通过直接访问浏览器的dom元素,可以对无形的UI元素进行操作,此种机器人工作深入“肌肤”,在虚空中操作,属于盲打。此种机器人工作在“腠理”,一台电脑同时只能运行一个机器人,且容易被各种外在因素打断(如弹窗);此种机器人工作在“脏腑”甚至“骨髓”,可以完全自由并发,不受外在的UI任何干扰。GUI机器人和无头浏览器机器人可以并称为前端机器人,前者有形,后者无形。后端机器人对第三方系统有一定的侵入性,执行效率相比前端机器人要高效的多。

2022-08-20 16:30:44 968

原创 我本机器,何须拟人!-RPA低代码开发系统设计思考

这种设计方式有很大弊端:非常的低效和不稳定,比如不稳定的弹框问题,就会让人头痛不已难以解决、而且也难以复用如java等强大的技术生态、究其根本还是设计思路上出了问题:人类生活在物理世界,所以需要屏幕、键盘、鼠标等媒介来查看和操作虚拟世界的元素,但是机器人本身就存在于虚拟世界,何必要模拟人类去借助屏幕、键盘、鼠标来查看和操作界面呢,应该直接用自己的方式操纵,无头操作系统和无头浏览器才是地道的解决方案。无头系统通常通过网络连接控制,但也有部分无头系统的设备需要通过RS-232串行连接进行设备的管理。

2022-08-20 16:14:37 510

原创 使用PlayWright技术实现Boss直聘爬虫

笔者之前使用RPA工具-来也Uibot给公司人事开发了一款岗位薪酬爬虫程序,感觉这种工具还是是给不太懂开发的大众小白用的,不太灵活,也没有强大的技术栈做支撑,后来发现了谷歌的puppeteer技术,非常喜欢,感觉这才是程序员需要的开发工具,但puppeteer 只支持NodeJs,对于C++、Java、Python技术栈的我来说,感觉还是不够方便,再后来又遇到了PlayWright:Puppeteer团队跳槽到微软开发的同类技术,但除了Js还支持Java,Python和C#等多种语言。测试运行,一切OK。

2022-08-20 15:36:52 3108 2

原创 位图排序算法优化篇-永无止境

我觉得需要……需要速度!”---《Top Gun》笔者上次写了一篇位图算法实践,介绍了位图算法的概念,编写了一个代码案例并对比了快速排序算法,实践结果性能提高9倍以上,结果还是非常不错的,但正如汤姆克鲁斯在电影《Top Gun》中吐露的心声:人类对于性能的追求是永无止境的!快如剃刀的位图算法是否还有进一步优化的空间呢?答案是肯定的!再次审视分析位图算法的代码实现逻辑:就是依次遍历排序数列,以数值为索引给位图数组赋值。静心深思,大脑中很快就蹦出了优化思路:这个遍历赋值的过程是单线程操作,程序开..

2022-05-08 21:05:47 675

原创 位图排序算法实践

一.算法介绍排序算法是计算机专业必学的内容,教科书里介绍的像冒泡排序,插入排序,Shell排序,堆排序,快速排序等几种经典的排序算法,其中快速排序最为推荐和广为人知,其采用二分分组递归的方式,对数据巧妙而快速的排序,平均性能复杂度为N*LogN,商用的代码库一般会使用快速排序(由于其最差性能复杂度为N*N,像STL库里面的排序算法会结合插入排序和堆排序,使其最差性能复杂度也能达到NLogN)。但是除了这些教科书里面的算法,有没有其它的排序算法,排序算法的时间复杂度能不能突破理论上的极限N*LogN呢?

2022-05-08 20:56:50 125

原创 Python按页拆分Word文档

Word按页拆分解决方案

2022-01-20 11:16:20 3625 7

原创 从重构到模式-使用策略模式扫描文件夹

在Windows程序开发中,我们经常要和文件夹打交道.而Windows也提供了一些API让我们来进行文件夹遍历访问操作。其中主要有以下几个函数:1) FindFirstFile声明:HANDLE FindFirstFile(  LPCTSTR lpFileName, // file name  LPWIN32_FIND_DATA lpFindFileData // databu

2011-11-15 16:18:26 941

原创 Android通用初始化Activity模板

Android通用初始化Activity模板很多Android程序开始运行的时候,都会首先启动一个初始化的InitActivity,然后在这个InitActivity的加载函数(onCreate)中,再去启动一个SplashScreen:这个SplashScreen除了启动时

2011-08-02 16:28:21 2630 1

转载 什么是软件架构

<br />软件架构(software architecture)是一系列相关的抽象模式,用于指导大型软件系统各个方面的设计。软件架构是一个系统的草图。软件架构描述的对象是直接构成系统的抽象组件。各个组件之间的连接则明确和相对细致地描述组件之间的通讯。在实现阶段,这些抽象组件被细化为实际的组件,比如具体某个类或者对象。在面向对象领域中,组件之间的连接通常用接口_(计算机科学)来实现。 <br />  软件体系结构是构建计算机软件实践的基础。与建筑师设定建筑项目的设计原则和目标,作为绘图员画图的基础一样,一个

2011-03-18 17:58:00 1045

DirectUI库demo

一个directUI库的源代码,以及我们后来基于这个库 开发的界面demo

2010-06-08

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除