自定义博客皮肤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)
  • 收藏
  • 关注

原创 617.合并二叉树

解题思路:从根节点开始遍历两个树,对应节点合并。1.对应节点为空,则合并节点也为空。2.对应节点不为空,则合并节点为两节点之和class Solution { public TreeNode mergeTrees(TreeNode root1, TreeNode root2) { if(root1==null){ return root2; } if(root2==null){ ..

2021-12-10 08:43:06 286

原创 647.回文字符串

解题思路:枚举出每个字符串的回文中心,然后定义两个指针,分别左右依次遍历。长度为 n 的字符串会生成 2n-1 组回文中心。(注意回文中心可以是一个字符,两个字符以上,但这里我们只需要定义一个,两个字符即可。当中心字符是三位字符,可以由一位字符遍历依次得到,中心字符是四位时,可以由两位字符遍历一次得到)代码class Solution { public int countSubstrings(String s) { int count=0; for(int.

2021-12-02 19:46:21 182

原创 739.每日温度

解题思路:当前下标所对应的温度依次往后遍历,直到第一次比它温度高的下标出现。两下标相减即可。class Solution { public int[] dailyTemperatures(int[] temperatures) { int len=temperatures.length; int[] res=new int[len]; for(int i=0;i<len;i++){ int currentTemp.

2021-11-29 12:31:00 186

原创 700.二叉搜索树的搜索

二叉搜索树特点:左子树所有节点的元素值均小于根的元素值;右子树所有节点的元素值均大于根的元素值;题解:若root为空,则返回null;若val=root.val,则返回root;若val<root.val,则返回root.left;若val>root.val,则返回root.right;class Solution { public TreeNode searchBST(TreeNode root, int val) { if(val==roo..

2021-11-26 08:44:02 147

原创 349.两个数组的交集

class Solution { public int[] intersection(int[] nums1, int[] nums2) { Set<Integer> set1 = new HashSet<>(); Set<Integer> set2 = new HashSet<>(); for(int i:nums1){ set1.add(i); }.

2021-06-06 21:28:54 34

原创 322.零钱兑换

动态规划public class Solution { public int coinChange(int[] coins, int amount) { int max = amount + 1; int[] dp = new int[amount + 1]; Arrays.fill(dp, max); dp[0] = 0; for (int i = 1; i <= amount; i++) { .

2021-06-06 21:22:01 38

原创 344.翻转字符串

class Solution { public void reverseString(char[] s) { int len = s.length; for (int i = 0; i < len/2; i++) { char temp = s[i]; s[i] = s[len-i-1]; s[len-i-1] = temp; } }}

2021-06-06 21:07:45 33

原创 338.比特位计数

Brian Kernighan 算法,a与a-1二进制相与,重复此操作,知道a为0,就可得二进制中1的个数class Solution { public int[] countBits(int n) { int[] bit=new int [n+1]; for(int i=0;i<=n;i++){ bit[i]=countnumber(i); } return bit; } public in.

2021-06-01 20:53:53 35

原创 226.反转二叉树

从叶子结点开始翻转,遍历到root节点左右子树都已经翻转之后。在交换两子树的位置class Solution { public TreeNode invertTree(TreeNode root) { if(root==null){ return null; } TreeNode left=invertTree(root.left); TreeNode right=invertTree(root.right).

2021-06-01 20:30:29 33

原创 模板的继承和html的转义

html的转义小于号< 转换为&lt;大于号> 转换为&gt;单引号' 转换为&#39;双引号" 转换为 &quot;与符号& 转换为 &amp;要关闭模板上下文字符串的转义:可以使用 {{ 模板变量|safe}}也可以使用:{% autoescape off %}模板语言代码{% endautoescape %}模板硬编码中的字符串默认不会经过转义,如果需要转义,那需要手动进行转义。...

2021-05-30 21:15:43 35

原创 220.存在重复元素III

用pari容器,类似HashMap存取键和键对象,然后在排序,判断键与键对象是否小于t和k.class Solution {public: bool containsNearbyAlmostDuplicate(vector<int>& nums, int k, int t) { vector<pair<long,long>>hash; for(int i=0;i<nums.size();i++){ .

2021-05-30 21:05:46 27

原创 215.数组中的第K个最大元素

快速排序,从大到小。然后在输出class Solution {public: int findKthLargest(vector<int>& nums, int k) { sort(nums.begin(), nums.end(), greater<int>()); return nums[k - 1]; }};看了其他解题方法,了解了一下堆排,以前接触太少了。class Solution { public.

2021-05-30 20:35:14 34

原创 206.反转链表

递归class Solution { public ListNode reverseList(ListNode head) { if (head == null || head.next == null) { return head; } ListNode newHead = reverseList(head.next); head.next.next = head; head.next = .

2021-05-30 20:10:25 24

原创 204.计算质数

打表class Solution { public int countPrimes(int n) { boolean[] is_primes=new boolean[n+10]; int count=0; for(int i=0;i<n;i++){ is_primes[i]=true; } is_primes[0]=is_primes[1]=false; for(int .

2021-05-29 20:33:41 34

原创 203.移除链表元素

方法:第一种情况,要删除的节点不是头结点。找到要删除节点的前一个节点直接pre.next=pre.next.next第二种情况,要删除的节点是头结点。head=head.next。如果删除后值还是等于要删除节点的值直接循环。class Solution { public ListNode removeElements(ListNode head, int val) { //删除值相同的头结点后,可能新的头结点也值相等,用循环解决 while(head!=null.

2021-05-29 19:26:55 23

原创 200岛屿数量

深度优先搜索,当遇到岛屿时,搜索它四个方位是否为岛屿,如果是则在搜索该岛屿的四个方位,依次进行下去,并把是岛屿的标记为0,知道遇到海水。

2021-05-29 19:05:15 41

原创 Cookie和Session

1.Cookie例子:cookie特点:1)以键值方式进行存储2)通过浏览器访问一个网站时,会将浏览器存储的跟网站相关的所有cookie信息发送给该网站的服务器。resquest.COOKIES3)cookie是基于域名安全的。4)cookie是有过期时间的,如果不指定,默认关闭浏览器之后cookie就会过期2.Session特点:1)以键值对进行存储的2)依赖于cookie3)也有过期时间,如果不指定,默认两周过期...

2021-05-26 08:14:52 653

原创 视图ajax

ajax异步的Javascript在不重复加载页面的情况下,对页面进行局部的刷新$.ajax({‘url’:请求地址,‘type’:请求方式‘dataType’:预期返回的数据格式‘data’;参数}).success(function(data){//回调函数})...

2021-05-23 21:15:48 56

原创 视图

1.视图功能接受请求,进行处理,与M和T进行交互,返回问答,返回html内容HttpResponse, 也可能重定向redicter(1)定义视图函数request参数必须有。是一个HttpRequest类型对象。参数名可以变化,但不要更改。(2)配置url建立URL和视图函数之间对应的函数2.url配置过程(1)在项目的urls文件中包含具体应用的urls文件,在具体应用urls文件中包含具体url和视图的对应关系。(2)url配置项是定义在一个名叫urlpattcrns的列表中,其中每

2021-05-23 21:08:52 43

原创 202.快乐数

class Solution { private int getNext(int n) { int totalSum = 0; while (n > 0) { int d = n % 10; n = n / 10; totalSum += d * d;//平方和相加,并求得下一个数 } return totalSum; } public ..

2021-05-23 20:36:19 30

转载 152.乘积最大的子数组

我们可以根据正负性进行分类讨论。考虑当前位置如果是一个负数的话,那么我们希望以它前一个位置结尾的某个段的积也是个负数,这样就可以负负得正,并且我们希望这个积尽可能「负得更多」,即尽可能小。如果当前位置是一个正数的话,我们更希望以它前一个位置结尾的某个段的积也是个正数,并且希望它尽可能地大。于是这里我们可以再维护一个f min(i),它表示以第 i 个元素结尾的乘积最小子数组的乘积,那么我们可以得到这样的动态规划转移方程:class Solution { public int maxProdu.

2021-05-23 20:19:19 44

原创 141.环形链表

用哈希表来存储已经访问过的节点,当我们每次到到这个节点时,如果在哈希表中,就已经时访问过的,就能构成一个环。public class Solution { public boolean hasCycle(ListNode head) { Set<ListNode> hasCycleSet=new HashSet<ListNode>(); while(head!=null){ if(!hasCy.

2021-05-23 20:01:17 31

原创 139.单词拆分

动态规划,把字符串s分割成两部分s[0,j-1]和s[j,i]看两部分是否合法,dp[j]==true表示s[0,j-1]合法,则只需要考虑s[j,i]是否在wordDict里即可public class Solution { public boolean wordBreak(String s, List<String> wordDict) { Set<String> word = new HashSet(wordDict); boole.

2021-05-23 19:43:30 27

原创 137.只出现一次的数字

利用哈希映射统计数组中每个元素的出现次数。每个键值对,键表示一个元素,值表示其出现的次数。class Solution { public int singleNumber(int[] nums) { Map<Integer,Integer> map=new HashMap<Integer,Integer>(); for(int num:nums){ map.put(num,map.getOrDefault(num,0.

2021-05-23 19:18:30 33

原创 129.求根节点到叶节点数字之和

深度优先搜索,从根节点开始,遍历每个节点,如果遇到叶子节点,则将叶子节点对应的数字加到数字之和。如果当前节点不是叶子节点,则计算其子节点对应的数字,然后对子节点递归遍历。class Solution { public int sumNumbers(TreeNode root) { return dfs(root, 0); } public int dfs(TreeNode root, int preSum) { if (root == null).

2021-05-23 17:31:39 43

原创 111.二叉树的最小深度

思路深度搜索出每一个节点的深度,对每一个非叶子节点,计算出它左右节点的最小深度。class Solution { public int minDepth(TreeNode root) { if(root==null){ return 0; } if(root.left==null&&root.right==null){ return 1; } in.

2021-05-23 17:14:31 27

原创 141.二叉树展开为链表

思路是先序遍历,先根节点root,然后左子树,最后右子树,存入链表中。然后使得前一个根节点的左节点为空pre.left=null,右节点为下一个即可,pre.right=curr即可。```javaclass Solution { public void flatten(TreeNode root) { List<TreeNode> list=new ArrayList<TreeNode>(); PreTraversal(root,li.

2021-05-23 16:50:02 30

原创 198 打家劫舍

动态规划当房屋k小于2时,偷取最高金额的一家当房屋k大于2时分两种情况:1,偷窃第 k间房屋,那么就不能偷窃第k−1 间房屋,偷窃总金额为前 k−2 间房屋的最高总金额与第 k间房屋的金额之和。2,不偷窃第k间房屋,偷窃总金额为前 k−1 间房屋的最高总金额。处。class Solution { public int rob(int[] nums) { if(nums==null) return 0; int len=nums.l.

2021-05-16 17:04:55 39

原创 189 旋转数组

我们采用数组翻转例如:1,2,3,4,5 k=2,结果应为4,5,1,2,3首先全部翻转得到5,4,3,2,1然后在翻转数组第一位到底k位得:4,5,3,2,1最后翻转数组第k位到最后一位得:4,5,1,2,3class Solution { public void rotate(int[] nums, int k) { k%=nums.length;//可能k大于数组的大小 replace(nums,0,nums.length-1); .

2021-05-16 13:50:24 28

原创 169 多数元素

class Solution { public int majorityElement(int[] nums) { Arrays.sort(nums); return nums[nums.length/2]; }}因为多数是要大于数组大小的1/2,所以我们可以先把数组排序(递增或递减),然后返回数组中间元素即可...

2021-05-16 13:21:33 22

原创 155 最小栈

用栈实现栈当一个元素要入栈时,我们取当前辅助栈的栈顶存储的最小值,与当前元素比较得出最小值,将这个最小值插入辅助栈中;当一个元素要出栈时,我们把辅助栈的栈顶元素也一并弹出;在任意一个时刻,栈内元素的最小值就存储在辅助栈的栈顶元素中class MinStack { Deque<Integer> xStack; Deque<Integer> minStack; public MinStack() { minStack = new Lin.

2021-05-16 12:54:56 43

原创 Django开发

在Django开发中M:和MVC中功能相同,和数据库进行交互V:和MVC中C功能相同,接受请求,进行处理,与M和T进行交互,返回应答。T:Template模板,和MVC中V功能相同,产生html页面。

2021-05-07 17:06:31 24

原创 MVC框架

MVC产生理念:分工。MVC的核心思想:解耦。三个模块:模型,视图,控制器。(1)C:控制器:接受数据,进行处理。(2)M:模型:和数据库进行交互(3)V:视图:产生html页面

2021-05-07 16:52:39 37

原创 Sum of Factorials

Problem DescriptionJohn von Neumann, b. Dec. 28, 1903, d. Feb. 8, 1957, was a Hungarian-American mathematician who made important contributions to the foundations of mathematics, logic, quantum physics,meteorology, science, computers, and game theory. He

2021-02-07 19:27:31 50

原创 命运

Problem Description穿过幽谷意味着离大魔王lemon已经无限接近了!可谁能想到,yifenfei在斩杀了一些虾兵蟹将后,却再次面临命运大迷宫的考验,这是魔王lemon设下的又一个机关。要知道,不论何人,若在迷宫中被困1小时以上,则必死无疑!可怜的yifenfei为了去救MM,义无返顾地跳进了迷宫。让我们一起帮帮执着的他吧!命运大迷宫可以看成是一个两维的方格阵列,如下图所示: yifenfei一开始在左上角,目的当然是到达右下角的大魔王所在地。迷宫的每一个格子都受到幸运女神眷恋或者痛苦魔王

2021-02-07 19:09:15 42

原创 汉诺塔IV

Problem Description还记得汉诺塔III吗?他的规则是这样的:不允许直接从最左(右)边移到最右(左)边(每次移动一定是移到中间杆或从中间移出),也不允许大盘放到小盘的上面。xhd在想如果我们允许最大的盘子放到最上面会怎么样呢?(只允许最大的放在最上面)当然最后需要的结果是盘子从小到大排在最右边。Input输入数据的第一行是一个数据T,表示有T组数据。每组数据有一个正整数n(1 <= n <= 20),表示有n个盘子。Output对于每组输入数据,最少需要的摆放次数。S

2021-02-07 19:06:35 39

原创 汉诺塔V

Total Submission(s) : 7 Accepted Submission(s) : 6Problem Description用1,2,…,n表示n个盘子,称为1号盘,2号盘,…。号数大盘子就大。经典的汉诺塔问题经常作为一个递归的经典例题存在。可能有人并不知道汉诺塔问题的典故。汉诺塔来源于印度传说的一个故事,上帝创造世界时作了三根金刚石柱子,在一根柱子上从下往上按大小顺序摞着64片黄金圆盘。上帝命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,

2021-02-07 19:05:02 47

原创 Quicksum

Problem DescriptionA checksum is an algorithm that scans a packet of data and returns a single number. The idea is that if the packet is changed, the checksum will also change, so checksums are often used for detecting transmission errors, validating docu

2021-01-30 20:32:13 89

原创 Bull Math

Problem DescriptionBulls are so much better at math than the cows. They can multiply hugeintegers together and get perfectly precise answers … or so theysay. Farmer John wonders if their answers are correct. Help him checkthe bulls’ answers. Read in t.

2021-01-30 20:28:58 71

原创 Sum

Problem DescriptionConsider the natural numbers from 1 to N. By associating to each number a sign (+ or -) and calculating the value of this expression we obtain a sum S. The problem is to determine for a given sum S the minimum number N for which we can

2021-01-30 20:25:47 91

空空如也

空空如也

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

TA关注的人

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