Openning

本文记录了作者作为懒惰的入门级开发者的学习历程,包括完成LeetCode在线裁判平台上的150个问题,以及在Android开发过程中的遇到的问题与解决方法。计划涉及使用Emacs作为文本编辑器、学习新技术如Hadoop、云计算等。主要使用Java编程,但也会涉及C、C++、Perl等语言。

This is a blog that write to myself, as a notebook recording what I've learnt.


I am a very lazy entry-level developer. I would like to record everything important, challenging, interesting or useful in this blog.


My plan so far, includes finishing all 150 problems in Leetcode Online Judge (http://oj.leetcode.com/) with the next 2 - 3 months.


Since I am now working as an Android Developer, I may also post some problems that I met during work.


Some study plan includes how to use emacs as text editor, new techniques like Hadoop, cloud computing...


BTW, I use Java primarily, but may also include some code in C, Cpp or Perl, three languages that I know but not very skillful. 


Leetcode 现有150题,按照AC rate (accepted rate?) 从大到小排序,也就是越简单的排在越前面。我将按照这个顺序逐个击破这150道题。


当然我的算法不一定是最好的,所以我也会贴出别人的算法,不同的或者更优的。 



Single Number

2013-10-01

45.7%


Maximum Depth of Binary Tree

2012-09-29

45.6%


Same Tree

2012-09-03

43.2%


Reverse Integer

2011-12-25

40.8%


Best Time to Buy and Sell Stock II

2012-10-30

35.4%


Linked List Cycle

2013-10-28

35.4%


Unique Binary Search Trees

2012-08-27

34.8%


Populating Next Right Pointers in Each Node

2012-10-28

34.2%


Search Insert Position

2012-03-03

34.0%


Remove Duplicates from Sorted List

2012-04-22

33.9%


Binary Tree Preorder Traversal

2013-11-05

33.4%


Binary Tree Inorder Traversal

2012-08-27

33.4%


Remove Element

2012-02-16

33.2%


Remove Duplicates from Sorted Array

2012-02-16

33.2%


Climbing Stairs

2012-04-03

33.1%


Maximum Subarray

2012-03-21

32.7%


Symmetric Tree

2012-09-23

32.4%


Merge Two Sorted Lists

2012-03-30

32.3%


Convert Sorted Array to Binary Search Tree

2012-10-02

32.2%


Roman to Integer

2012-01-15

32.1%


Swap Nodes in Pairs

2012-02-14

31.9%


Merge Sorted Array

2012-05-20

31.9%


Pascal's Triangle

2012-10-28

31.6%


Best Time to Buy and Sell Stock

2012-10-30

31.5%


Balanced Binary Tree

2012-10-08

31.3%


Binary Tree Level Order Traversal II

2012-10-01

30.8%


Permutations

2012-03-16

30.7%


Gray Code

2012-05-20

30.7%


Integer to Roman

2012-01-15

30.5%


Linked List Cycle II

2013-10-30

30.3%


Single Number II

2013-10-02

30.3%


Unique Paths

2012-03-28

30.2%


Minimum Path Sum

2012-03-28

30.2%


Rotate Image

2012-03-17

30.1%


Container With Most Water

2012-01-08

29.9%


Generate Parentheses

2012-02-12

29.8%


Binary Tree Level Order Traversal

2012-09-28

29.8%


Search a 2D Matrix

2012-04-06

29.8%


Set Matrix Zeroes

2012-04-05

29.8%


Plus One

2012-04-02

29.7%


Binary Tree Postorder Traversal

2013-11-07

29.6%


Combinations

2012-04-18

29.5%


Remove Duplicates from Sorted Array II

2012-04-19

29.5%


Path Sum

2012-10-13

29.4%


Spiral Matrix II

2012-03-27

29.3%


Pascal's Triangle II

2012-10-28

29.3%


Sort Colors

2012-04-08

29.2%


Remove Nth Node From End of List

2012-01-27

29.2%


Search in Rotated Sorted Array II

2012-04-19

29.0%


Populating Next Right Pointers in Each Node II

2012-10-28

29.0%


Palindrome Number

2012-01-04

28.9%


Minimum Depth of Binary Tree

2012-10-09

28.0%


Search in Rotated Sorted Array

2012-03-02

27.7%


Sum Root to Leaf Numbers

2013-02-18

27.6%


Valid Parentheses

2012-01-30

27.5%


Trapping Rain Water

2012-03-10

27.4%


3Sum Closest

2012-01-18

27.4%


Jump Game

2012-03-24

26.9%


Subsets II

2012-06-25

26.7%


Longest Common Prefix

2012-01-17

26.7%


Valid Sudoku

2012-03-03

26.7%


Subsets

2012-04-18

26.6%


Length of Last Word

2012-03-27

26.4%


Path Sum II

2012-10-14

26.4%


Search for a Range

2012-03-02

26.1%


Unique Paths II

2012-03-28

26.1%


Convert Sorted List to Binary Search Tree

2012-10-02

26.0%


Count and Say

2012-03-05

25.9%


Triangle

2012-10-29

25.8%


Longest Consecutive Sequence

2013-02-13

25.7%


Combination Sum

2012-03-06

25.5%


Binary Tree Zigzag Level Order Traversal

2012-09-28

25.5%


N-Queens II

2012-03-20

25.5%


Validate Binary Search Tree

2012-08-31

25.4%


Permutations II

2012-03-16

25.3%


Unique Binary Search Trees II

2012-08-27

25.2%


Next Permutation

2012-02-25

25.2%


Partition List

2012-04-30

25.2%


Insertion Sort List

2013-11-12

25.2%


Flatten Binary Tree to Linked List

2012-10-14

25.2%


Pow(x, n)

2012-03-19

25.1%


N-Queens

2012-03-19

24.7%


Reverse Linked List II

2012-06-27

24.5%


Edit Distance

2012-04-04

24.4%


Add Binary

2012-04-02

24.3%


Remove Duplicates from Sorted List II

2012-04-22

24.2%


Construct Binary Tree from Inorder and Postorder Traversal

2012-09-30

24.2%


Construct Binary Tree from Preorder and Inorder Traversal

2012-09-30

24.2%


Letter Combinations of a Phone Number

2012-01-26

24.2%


Palindrome Partitioning

2013-02-27

23.7%


Gas Station

2013-09-28

23.0%


Distinct Subsequences

2012-10-18

22.9%


Reverse Nodes in k-Group

2012-02-15

22.8%


Combination Sum II

2012-03-06

22.7%


Longest Substring Without Repeating Characters

2011-05-15

22.7%


Jump Game II

2012-03-16

22.4%


Add Two Numbers

2011-11-01

22.4%


Anagrams

2012-03-19

22.3%


Merge k Sorted Lists

2012-02-13

22.0%


Two Sum

2011-03-13

21.8%


ZigZag Conversion

2011-12-05

21.6%


4Sum

2012-01-26

21.5%


Longest Palindromic Substring

2011-11-11

21.3%


Sqrt(x)

2012-04-03

21.2%


Rotate List

2012-03-27

21.2%


Best Time to Buy and Sell Stock III

2012-11-06

21.1%


First Missing Positive

2012-03-08

21.0%


Valid Palindrome

2013-01-12

21.0%


Recover Binary Search Tree

2012-09-01

20.5%


Permutation Sequence

2012-03-27

20.3%


Insert Interval

2012-03-27

20.2%


Scramble String

2012-04-30

19.9%


Spiral Matrix

2012-03-24

19.6%


Sudoku Solver

2012-03-04

19.6%


Largest Rectangle in Histogram

2012-04-22

19.5%


Maximal Rectangle

2012-04-23

19.5%


Implement strStr()

2012-02-18

19.5%


Restore IP Addresses

2012-08-07

19.4%


Merge Intervals

2012-03-26

19.4%


Clone Graph

2013-09-24

19.3%


Copy List with Random Pointer

2013-10-03

19.3%


Word Search

2012-04-18

19.1%


Evaluate Reverse Polish Notation

2013-11-27

19.0%


Regular Expression Matching

2012-01-08

19.0%


Multiply Strings

2012-03-12

18.5%


Simplify Path

2012-04-03

18.3%


Binary Tree Maximum Path Sum

2012-11-07

18.2%


Word Break

2013-10-04

18.2%


Longest Valid Parentheses

2012-02-29

17.9%


Sort List

2013-11-16

17.7%


Reorder List

2013-11-02

17.6%


Interleaving String

2012-08-30

17.4%


3Sum

2012-01-17

16.7%


Palindrome Partitioning II

2013-02-28

16.7%


Minimum Window Substring

2012-04-15

16.4%


Substring with Concatenation of All Words

2012-02-23

16.1%


Candy

2013-09-30

15.7%


Median of Two Sorted Arrays

2011-03-27

15.5%


Decode Ways

2012-06-25

15.1%


Divide Two Integers

2012-02-18

15.1%


Word Ladder

2013-02-10

15.0%


String to Integer (atoi)

2011-12-26

14.7%


Surrounded Regions

2013-02-21

14.6%


Text Justification

2012-04-03

12.6%


Word Break II

2013-10-05

12.4%


LRU Cache

2013-11-09

11.4%


Wildcard Matching

2012-03-15

11.1%


Valid Number

2012-04-02

9.8%


Max Points on a Line

2013-11-22

9.4%


Word Ladder II

2013-02-10

8.1%



/** * @brief 空闲运行状态处理函数 * * 该函数处理充放电命令状态转换: * 1. 当放电命令有效且未被禁止时,若检测到开关信号,则进入预充电状态并清除放电命令 * 2. 当充电命令有效且未被禁止时,直接进入充电开始状态并清除充电命令 * * @note 每次执行后都会通过return语句立即返回,确保每次只处理一个状态转换 */ void idl_run(void) { if (charge_discharge.discharge_cmd && charge_discharge.discharge_forbidden == 0) { if(charge_discharge.switch_status.bits.switch_signal){ charge_discharge.dis_chg_status = PRE_CHARGE; charge_discharge.discharge_cmd = 0; #if CONTACTOR set_out(CHARGE_OUT);//开启放电开关--开启正极接触器 // set_out(DIS_CHARGE_OUT);//---开启负极接触器 #endif } return; } if(charge_discharge.charge_cmd && charge_discharge.charge_forbidden==0){ charge_discharge.dis_chg_status = CHARGE_START; charge_discharge.charge_cmd = 0; return; } } /** * @brief 获取预充电占空比 * * @param pre_charge_current 预充电电流值 * @return float 计算得到的占空比值,范围限制在[init_duty_radio, 1]之间 * * @note 占空比计算公式:预充电功率/(电流平方*预充电电阻) 10欧姆 * 计算结果会进行上下限限制,确保在有效范围内 */ float get_duty_radio(float pre_charge_current) { charge_discharge.pre_charge_omh = 10; float duty_radio; duty_radio = charge_discharge.pre_charge_power / (pre_charge_current * pre_charge_current * charge_discharge.pre_charge_omh); if(duty_radio>1){ duty_radio = 1; }else if (duty_radio < charge_discharge.init_duty_radio) { duty_radio = charge_discharge.init_duty_radio; set_out(PRE_CHARGE_OUT); } return duty_radio; } /** * @brief 启动预充电过程 * * 该函数用于启动电池管理系统的预充电流程,主要完成以下操作: * 1. 设置预充电输出信号 * 2. 设置预充电ADC采样开始时间(当前时间+预充电时间间隔) * 3. 更新预充电状态为运行中 * 4. 设置预充电开关状态标志 * 5. 清除预充电失败错误标志 */ void pre_charge_start(void) { // 打开预充100us后开始进行ADC采样 charge_discharge.pre_charge_get_adc_t = Get_Timer_Count_10us() + charge_discharge.pre_charge_delta_t; charge_discharge.pre_charg_status = PRE_CHARGE_RUNNING; charge_discharge.switch_status.bits.precharge_state = 1; charge_discharge.error_status.flags.precharge_fail = 0; set_out(PRE_CHARGE_OUT); } /** * @brief 预充运行处理函数 * * 该函数负责处理预充电过程中的运行逻辑,包括: * - 获取当前时间戳 * - 进行ADC采样并计算占空比 * - 根据占空比设置下次预充开始时间 * - 关闭预充输出 * - 检查预充周期是否超限(超过10次) * - 检查预充是否完成(占空比>95%) * * @note 预充时间戳记录单位为微秒(us)级 */ void pre_charge_running(void) { // 假设out1为pre charge out,pre_charge时间戳记录需要修改为us级 uint32_t now = Get_Timer_Count_10us(); float pre_charge_current = 0; float duty_radio = 0; if(now>charge_discharge.pre_charge_get_adc_t){ // ADC采样,转化为电流,计算占空比,根据占空比计算下次开始预充时间 // 关闭预充OUT get_pre_dis_vloatge(); if(charge_discharge.pre_charge_circles==0){ pre_charge_current = 0.1; charge_discharge.init_duty_radio = 0; duty_radio = get_duty_radio(Precharge_The_Sampling_Current()); } else { // duty_radio = get_duty_radio(electricity_app_t.discharge_current); duty_radio = get_duty_radio(Precharge_The_Sampling_Current()); } charge_discharge.pre_charge_end_t = now + (int32_t)charge_discharge.pre_charge_delta_t * (1 / duty_radio - 1); reset_out(PRE_CHARGE_OUT); // charge_discharge.dis_chg_status = PRE_CHARGE_RUNNING_END; // charge_discharge.dis_chg_status = DISCHARGE_OPENNING; if(charge_discharge.pre_charge_circles++>10){ // 预充10个周期还未完成,则预充超时 pre_charge_error(); } if(duty_radio>0.95){ // 预充到95%,预充完成 pre_charge_done(); } } } /** * @brief 预充电运行结束处理函数 * * 当预充电时间到达设定值时,将预充电状态重置为开始状态,以便进行下一个周期。 * * @note 该函数假设out1为预充电输出 */ void pre_charge_running_end(void) { // 假设out1为pre charge out uint32_t now = Get_Timer_Count_10us(); if(now>charge_discharge.pre_charge_end_t){ // 开始下一个周期 charge_discharge.pre_charg_status = PRE_CHARGE_START; } } /** * @brief 预充电完成处理函数 * * 该函数用于在预充电完成后更新相关状态标志: * - 将预充电状态设置为PRE_CHARGE_START * - 将放电状态设置为DISCHARGE_START * - 清除预充电状态位 */ void pre_charge_done(void) { charge_discharge.pre_charg_status = PRE_CHARGE_START; charge_discharge.dis_chg_status = DISCHARGE_OPENNING; charge_discharge.switch_status.bits.precharge_state = 0; } /** * @brief 处理预充电错误状态 * * 设置预充电失败标志位,执行预充电完成操作, * 并将充放电状态重置为空闲状态,同时清零预充电错误计数。 */ void pre_charge_error(void) { charge_discharge.error_status.flags.precharge_fail = 1; pre_charge_done(); charge_discharge.dis_chg_status = CHARGE_DISCHARGE_IDL; charge_discharge.pre_charge_error_circles = 0; } /** * @brief 预充电控制函数 * * 根据当前预充电状态执行不同的预充电操作: * 1. 如果放电被禁止,则关闭放电并返回 * 2. 根据pre_charg_status状态执行相应操作: * - PRE_CHARGE_START: 启动预充电 * - PRE_CHARGE_RUNNING: 运行预充电 * - PRE_CHARGE_RUNNING_END: 结束预充电 */ void pre_charge(void) { if (charge_discharge.discharge_forbidden) { discharge_off(); return; } switch (charge_discharge.pre_charg_status) { case PRE_CHARGE_START: pre_charge_start(); break; case PRE_CHARGE_RUNNING: pre_charge_running(); break; case PRE_CHARGE_RUNNING_END: pre_charge_running_end(); break; default: break; } } 我的预充处理这里有些问题,你来帮我优化一下,我使用GPIO来模拟计算预充占空比
07-23
乐播投屏是一款简单好用、功能强大的专业投屏软件,支持手机投屏电视、手机投电脑、电脑投电视等多种投屏方式。 多端兼容与跨网投屏:支持手机、平板、电脑等多种设备之间的自由组合投屏,且无需连接 WiFi,通过跨屏技术打破网络限制,扫一扫即可投屏。 广泛的应用支持:支持 10000+APP 投屏,包括综合视频、网盘与浏览器、美韩剧、斗鱼、虎牙等直播平台,还能将央视、湖南卫视等各大卫视的直播内容一键投屏。 高清流畅投屏体验:腾讯独家智能音画调校技术,支持 4K 高清画质、240Hz 超高帧率,低延迟不卡顿,能为用户提供更高清、流畅的视觉享受。 会议办公功能强大:拥有全球唯一的 “超级投屏空间”,扫码即投,无需安装。支持多人共享投屏、远程协作批注,PPT、Excel、视频等文件都能流畅展示,还具备企业级安全加密,保障会议资料不泄露。 多人互动功能:支持多人投屏,邀请好友加入投屏互动,远程也可加入。同时具备一屏多显、语音互动功能,支持多人连麦,实时语音交流。 文件支持全面:支持 PPT、PDF、Word、Excel 等办公文件,以及视频、图片等多种类型文件的投屏,还支持网盘直投,无需下载和转格式。 特色功能丰富:投屏时可同步录制投屏画面,部分版本还支持通过触控屏或电视端外接鼠标反控电脑,以及在投屏过程中用画笔实时标注等功能。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值