自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 收藏
  • 关注

翻译 每日算法:数组中最长的山脉

原题//先找到比左右两侧大的数 然后以这个数为中心 依次找到左右的长度class Solution { public int longestMountain(int[] A) { if (A == null || A.length <= 2) { return 0; } int res = 0; for (int i = 1; i < A.length - 1; i++) {

2020-10-25 12:07:48 223

原创 自动亮度调节3:信息熵,均值方差

图像的熵:反映了图像包含的信息量 1)当图像为纯色图时(纯白,纯黑图),图像只包含一个灰度值,此时熵最小,H=0(见定理3),图像的信息量为0。 因为图像为纯色时(灰度为一个值),也就说明图像不包含任何地物目标,信息量为0。(类似于空白地图) 2)当图像包含N个灰度值时,即图像每个像素的灰度值都不同,此时熵最大,H=logN,图像的信息量最大。 因为此时,图像每个像素灰度都不同,可以认为图像每个单一像素都是一个独立地物目标,信息量为最大N。(类似于

2020-10-24 22:34:52 607 1

原创 自动亮度调节2:版本1+python类

import cv2 as cvimport numpy as npimport osimport mathfrom PIL import Image, ImageStat, ImageEnhanceimport sysclass image_quality_controller: def __init__(self): self.exposure = 40 # [0 - 100] self.exposure_step = 10

2020-10-24 19:44:41 208

翻译 自动亮度调节1:python openCV库的简单使用

参考链接:openCV库的基本使用# -*- coding: utf-8 -*-# @Author: Xingmo import cv2import numpy as np # 读取图片: cv2.imread(路径,num) 其中num=0,为灰度图像;num=1为彩图img = cv2.imread('002.jpg',0) # 创建窗口,cv2.namedWindow(窗口名)cv2.namedWindow('image') # 保存图片,cv2.imwrite(保存图片名

2020-10-24 19:04:49 699 1

原创 每日算法:贪心

题目输入:clips = [[0,4],[2,8]], T = 5输出:2解释:注意,你可能录制超过比赛结束时间的视频。class Solution { public int videoStitching(int[][] clips, int T) { int point = 0; int sum = 0; int cnt = 0; //剪辑次数不能超过T次; while (point < T &am

2020-10-24 18:04:27 56

原创 每日算法:链表,快慢指针,反转链表

判断一个链表是否为回文链表。class Solution { public boolean isPalindrome(ListNode head) { if (head == null || head.next == null) { return true; } ListNode fast = head; ListNode slow = head; // 快慢指针 while(f

2020-10-23 08:19:53 70

原创 每日算法:二叉树

二叉树的最小绝对值class Solution { private int res = Integer.MAX_VALUE; TreeNode pre = null; public int getMinimumDifference(TreeNode root) { //二叉查找树中,中间节点的值一定是其左右节点值的中间数,因此最小差别一定是在中间节点与左右节点之间 getMin(root); return res; }

2020-10-12 07:47:05 51

原创 每日算法:环形链表的判断

快慢指针public class Solution { public boolean hasCycle(ListNode head) { //快慢指针 ListNode fast=head; ListNode slow=head; while(fast!=null&&fast.next!=null){ fast=fast.next.next; slow=slow.next

2020-10-09 07:27:20 121

原创 每日算法:弗洛伊德算法

原题class Solution { public int[] sumOfDistancesInTree(int N, int[][] edges) { final int INF = 0x3f3f3f3f; int [][]graph=new int[N][N]; for(int i=0;i<N;i++){ Arrays.fill(graph[i],INF);// } for(int [

2020-10-06 10:02:39 88

翻译 每日算法:中序后序创建树

算法地址其实思路比较好想到,就是如何划分子问题,然后递归的构建左子树和右子树。 inorder = [9,3,15,20,7] postorder = [9,15,7,20,3]因为后序后遍历根节点,后续最后一个节点为整棵树的根节点,可以确定根节点为3;再根据中序得到: leftInOrder = [9]RightInOrder = [15, 20 ,7] 又由于中序和先序的数组大小应该相同的, 所以, LeftPostOrder = [9] RightPostOrder = [15, 7, 20]

2020-09-25 06:38:56 108

翻译 每日算法:优先队列

链接前 K 个高频元素给定一个非空的整数数组,返回其中出现频率前 k 高的元素。示例 1:输入: nums = [1,1,1,2,2,3], k = 2输出: [1,2]示例 2:输入: nums = [1], k = 1输出: [1]class Solution { public int[] topKFrequent(int[] nums, int k) { Map<Integer, Integer> occurrences = new HashM

2020-09-07 08:01:40 102

翻译 每日算法:贪心

题目1353. 最多可以参加的会议数目给你一个数组 events,其中 events[i] = [startDayi, endDayi] ,表示会议 i 开始于 startDayi ,结束于 endDayi 。你可以在满足 startDayi <= d <= endDayi 中的任意一天 d 参加会议 i 。注意,一天只能参加一个会议。请你返回你可以参加的 最大 会议数目。class Solution { public int maxEvents(int[][] events)

2020-09-04 08:21:46 95

翻译 每日算法:n皇后,dfs,回溯

题目class Solution { List<List<String>>res; int n; boolean []col;//记录某列是否放置皇后 boolean []main1;//对角线 boolean []sub;//副对角线 public List<List<String>> solveNQueens(int n) { res=new ArrayList<>();

2020-09-03 08:06:46 100

原创 每日一题:动态规划

题目486. 预测赢家给定一个表示分数的非负整数数组。 玩家 1 从数组任意一端拿取一个分数,随后玩家 2 继续从剩余数组任意一端拿取分数,然后玩家 1 拿,…… 。每次一个玩家只能拿取一个分数,分数被拿取之后不再可取。直到没有剩余分数可取时游戏结束。最终获得分数总和最多的玩家获胜。给定一个表示分数的数组,预测玩家1是否会成为赢家。你可以假设每个玩家的玩法都会使他的分数最大化。示例 1:输入:[1, 5, 2]输出:False解释:一开始,玩家1可以从1和2中进行选择。如果他选择 2(或者

2020-09-02 08:07:49 130

原创 每日算法:优先队列+递归

题目332. 重新安排行程给定一个机票的字符串二维数组 [from, to],子数组中的两个成员分别表示飞机出发和降落的机场地点,对该行程进行重新规划排序。所有这些机票都属于一个从 JFK(肯尼迪国际机场)出发的先生,所以该行程必须从 JFK 开始。说明:如果存在多种有效的行程,你可以按字符自然排序返回最小的行程组合。例如,行程 [“JFK”, “LGA”] 与 [“JFK”, “LGB”] 相比就更小,排序更靠前所有的机场都用三个大写字母表示(机场代码)。假定所有机票至少存在一种合理的行程。

2020-08-27 08:01:23 154

翻译 每日算法:回溯

原题17. 电话号码的字母组合给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。class Solution { public List<String> letterCombinations(String digits) { List<String> list = new ArrayList<>(); if (digits == null || digits.length() == 0) {

2020-08-26 07:48:54 88

翻译 每日算法:回溯

原题491. 递增子序列给定一个整型数组, 你的任务是找到所有该数组的递增子序列,递增子序列的长度至少是2。示例:输入: [4, 6, 7, 7]输出: [[4, 6], [4, 7], [4, 6, 7], [4, 6, 7, 7], [6, 7], [6, 7, 7], [7,7], [4,7,7]]class Solution { public List<List<Integer>> findSubsequences(int[] nums) {

2020-08-25 07:37:55 73

翻译 每日算法:满二叉树

原题求出所有有N个节点的满二叉树class Solution { public List<TreeNode> allPossibleFBT(int N) { List<TreeNode> res=new ArrayList<>(); if (N%2==0) { return res; } if(N==1){ TreeNode root=new Tre

2020-08-25 07:35:41 196

翻译 每日算法:dfs,二叉树

题目971. 翻转二叉树以匹配先序遍历class Solution { int i=0; boolean flag; List<Integer>res=new ArrayList<>(); public List<Integer> flipMatchVoyage(TreeNode root, int[] voyage) { dfs(root,voyage); if(flag){ L

2020-08-24 07:22:13 97

翻译 每日算法:动态规划

题目413. 等差数列划分如果一个数列至少有三个元素,并且任意两个相邻元素之差相同,则称该数列为等差数列。A = [1, 2, 3, 4]返回: 3, A 中有三个子等差数组: [1, 2, 3], [2, 3, 4] 以及自身 [1, 2, 3, 4]。class Solution { public int numberOfArithmeticSlices(int[] A) { int res=0; if(A==null||A.length<2)re

2020-08-23 07:39:39 75

翻译 每日算法:m和n之间按位与运算

题目201. 数字范围按位与给定范围 [m, n],其中 0 <= m <= n <= 2147483647,返回此范围内所有数字的按位与(包含 m, n 两端点)。示例 1:输入: [5,7]输出: 4示例 2:输入: [0,1]输出: 0class Solution { public int rangeBitwiseAnd(int m, int n) { int offset=0; while(m!=n){

2020-08-23 07:02:15 336

原创 每日算法:dfs和bfs

题目扫雷游戏class Solution { int[] dirX = {0, 1, 0, -1, 1, 1, -1, -1}; int[] dirY = {1, 0, -1, 0, 1, -1, 1, -1}; public char[][] updateBoard(char[][] board, int[] click) { int m=board.length; int n=board[0].length; int x=cl

2020-08-22 06:12:32 75

原创 每日算法:反转链表

反转链表1反转链表2206. 反转链表反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULLclass Solution { public ListNode reverseList(ListNode head) { ListNode pre=null; ListNode cur=head; while(cur!=null

2020-08-21 08:11:07 85

翻译 算法练习:hash表

题目128. 最长连续序列给定一个未排序的整数数组,找出最长连续序列的长度。要求算法的时间复杂度为 O(n)。示例:输入: [100, 4, 200, 1, 3, 2]输出: 4解释: 最长连续序列是 [1, 2, 3, 4]。它的长度为 4。class Solution { public int longestConsecutive(int[] nums) { Set<Integer>set=new HashSet<>();

2020-08-19 06:12:13 109

原创 每日算法:链表和二叉树

题目109. 有序链表转换二叉搜索树给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例:给定的有序链表: [-10, -3, 0, 5, 9],一个可能的答案是:[0, -3, 9, -10, null, 5], 它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 9 / / -10 5class Solution {

2020-08-18 05:52:15 130

翻译 每日算法:树

原题110. 平衡二叉树给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。示例 1:给定二叉树 [3,9,20,null,null,15,7]3/ 9 20/ 15 7返回 true 。示例 2:给定二叉树 [1,2,2,3,3,null,null,4,4] 1 / \ 2 2/ \3 3/ 4 4返回 false 。class Solutio

2020-08-17 07:30:32 78

翻译 每日算法:动态规划

鸽了好久,因为动归对于我来说,比较难。原题5. 最长回文子串给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: “babad”输出: “bab”注意: “aba” 也是一个有效答案。示例 2:输入: “cbbd”输出: “bb”class Solution { public String longestPalindrome(String s) { if(s==null||s.length()<2)ret

2020-08-16 06:45:21 121

原创 每日算法:二分,中位数

题目4. 寻找两个正序数组的中位数给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出这两个正序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。你可以假设 nums1 和 nums2 不会同时为空。示例 1:nums1 = [1, 3]nums2 = [2]则中位数是 2.0示例 2:nums1 = [1, 2]nums2 = [3, 4]则中位数是 (2 + 3)/2 = 2.5class Solution { p

2020-08-07 08:08:31 515

原创 每日算法:最长子串

题目无重复字符的最长子串给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序

2020-08-06 09:34:41 909

原创 每日算法:链表,LeetCode两数相加

题目2. 两数相加给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807/** * Definition for si

2020-08-06 07:36:52 78

原创 每日算法:两数之和

https://leetcode-cn.com/problems/two-sum/两数之和给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]class Solution {

2020-08-05 08:40:35 91

原创 1025 PAT Ranking (25分)java实现,最后一个测试点超时

处理排名(1 1 3 4 4 6)的方式有两种第一种方法:第一个人记为1,遍历剩余个体bl.get(0).rank=1;for(int k=1;k<bl.size();k++) { if(bl.get(k).score==bl.get(k-1).score) { bl.get(k).rank=bl.get(k-1).rank; }else { bl.get(k).rank=...

2020-02-28 11:08:38 386

原创 1.1日期差处理

处理日期差有一个很直接的思路,那就是令小日期不断+1,直到等于大日期。函数:判断闰年。用二维数组区分闰年月份与平年月份的不同。记着这个思路,自己想的很容易乱package test1;import java.util.Scanner;/** * 计算日期差YYYYMMDD * @author DELL * */public class Test1 { static int...

2020-02-28 09:39:36 132

原创 1048 数字加密 (20分)java实现(统一格式处理)

当数据格式一致时,处理会更加方便。刚开始的十分,想分别处理长串和短串,不仅容易乱,而且还容易忽略细节。import java.util.Scanner;/** * 首先固定一个加密用正整数 A,对任一正整数 B,将其每 1位数字与 A 的对应位置上的数字进行以下运算: * 对奇数位,对应位的数字相加后对 13 取余——这里用 J 代表 10、Q 代表 11、K 代表 12; * 对...

2020-02-24 11:42:53 656

原创 1041 考试座位号 (15分)java实现(散列思想)

题目要求:根据学生测试座位号,输出学生编号以及实际座位示例:输入43310120150912233 2 43310120150912119 4 13310120150912126 1 33310120150912002 3 223 4输出:3310120150912002 23310120150912119 1原本的思路是用map,多此一举。Student s=new ...

2020-02-23 15:27:42 352

空空如也

空空如也

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

TA关注的人

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