自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 LeetCode(38 外观数列)

如题看上去先用递归来写写 public static String countAndSay(int n) { if (n==1){ return "1"; } StringBuilder rel =new StringBuilder(countAndSay(n-1));//递归获取 StringBuilder re =new StringBuilder(); int count =1;

2021-06-17 19:51:37 109

原创 LeetCode(36. 有效的数独)go语言描述

解析见java,这里用数组缓存func IsValidSudoku(board [][]byte) bool { for x:=0;x<9;x++{//每行每列判断是否有重复数字 countx :=[9]int{}//行 数字计数 county :=[9]int{}//列 数字计数 for y:=0;y<9;y++{ if(board[x][y]!='.'){ if countx[int(board[x][y])-49]==1{ return false

2021-04-26 18:53:55 122

原创 LeetCode(36. 有效的数独)

如题检测每行每列每个3*3格子内的数字情况,可以使用各种方式记录数字,这里选择位操作 public static boolean isValidSudoku(char[][] board) { for (int x=0;x<9;x++){ int xn=0;//横向缓存 987654321 9位按位记录数字情况 int yn=0;//纵向缓存 for(int y=0;y<9;y++){

2021-04-26 18:50:33 88

原创 LeetCode(35. 搜索插入位置)go语言描述

标准二分法func searchInsert(nums []int, target int) int { var left,right int right=len(nums)-1 if nums[left]>=target{ //小于最小元素,插入头部,等于最小元素,返回数组头 return 0 } else if nums[right]==target{//等于最大元素。返回数组原尾部 return right }else if nums[right]<target{/

2021-04-26 18:43:45 69

原创 LeetCode(35. 搜索插入位置)

如题又是刻在dna中的二分法 public static int searchInsert(int[] nums, int target) { int left =0; int right = nums.length-1; if (target<=nums[0]){//小于等于最小值,插入0 return 0; }else if (target==nums[right]){//=最大,插入原最后一位

2021-04-26 18:40:39 38

原创 LeetCode(33. 搜索旋转排序数组) go语言描述

x

2021-04-07 20:22:12 57

原创 LeetCode(34. 在排序数组中查找元素的第一个和最后一个位置)

如图刻在DNA里面的二分法。先上二饭查找,再往两边匹配public static int[] searchRange(int[] nums, int target) { if (nums.length == 0) { return new int[]{-1, -1}; } int left = 0; int right = nums.length - 1; int middle = -1;

2021-04-07 20:20:04 53

原创 LeetCode(33. 搜索旋转排序数组) go语言描述

二分加特殊情况归纳func search(nums []int, target int) int { if (nums[0] < nums[len(nums)-1] && (target < nums[0] || target > nums[len(nums)-1])) || //超出范围直节返回 (nums[0] > nums[len(nums)-1] && target < nums[0] && target >

2021-04-07 11:35:23 50

原创 LeetCode(33. 搜索旋转排序数组)

如题找数的最直接想法就是,排序二分两板斧了,直接有序,那就上二分大法,有翻转很显然会有特殊情况的处理public static int search(int[] nums, int target) { if ((nums[0] > nums[nums.length - 1] && target < nums[0] && target > nums[nums.length - 1]) || //在范围外的直接排除

2021-04-07 11:32:37 47

原创 LeetCode(32.最长有效括号) go语言描述

匹配以当前起有效括号func LongestValidParentheses(s string) int { rs := []rune(s) var count, le, max, bre int //len 当前连续有效长度 count 计数标志(0即构成有效括号) bre 下次循环继续节点前一位(跳过相关区域用) for i := 0; i < len(rs); i++ { if rs[i] == ')' { //由'('开始匹配 continue } count, le

2021-04-02 14:30:51 119

原创 LeetCode(32. 最长有效括号)

如题对于匹配有效括号的最直接思路恐怕就是栈了,但是在这题,没必要完全使用栈public static int longestValidParentheses(String s) { int max = 0; int len = 0;//当前连续有效长度 int count = 0;//计数标志 int bre = 0;//下次循环继续节点前一位 for (int i = 0; i < s.length(); i++)

2021-04-01 19:56:05 89

原创 不同表间数据同步(sql实现)

关于不同表间的数据同步工作中遇到一个问题,添加新的数据同步逻辑后,需要对旧数据进行修复,于是需要进行表间的数据同步,记录一下由于同步的目标表是一个辅助表,其中的数据相较于源表数据会少很多,于是得分两步。已有数据的修改,没有数据的新建已有数据的修改:update 表1 ta,表2 tb set ta.目标字段 = tb.源字段 where ta.关联id = tb.关联id不同库需要指定库名新数据的创建insert into 表a(目标字段1,目标字段2,目标字段3)select * f

2021-03-04 17:31:25 2313 4

原创 springboot项目maven打包将配置文件放在jar包外,读取自定义配置文件

项目中需要创建一个中英文转换的字典,由于适用范围很小,选择使用配置文件直接初始化进内存配置而非入库。transform.properties文件格式#不定项数,需全部加载张珊=asda李四=kjdsja王五=ljdksa#....由于数目及key均无法确定,无法使用注解获取,需自行初始化@Componentpublic class translateUtil { private static final Logger logger = LoggerFactory.getLogger(t

2020-09-24 16:39:25 1242 1

原创 LeetCode(19. 删除链表的倒数第N个节点)

如题删除倒数第n个元素即将倒数第n+1个元素的next指向倒数第n-1个即可,直观做法先遍历得到node个数,然后找倒数第n+1个元素public static ListNode removeNthFromEnd(ListNode head, int n){ int index =0; ListNode node=head; while(node!=null){//获取元素个数 node=node.next;

2020-06-12 23:33:01 192

原创 LeetCode(1431. 拥有最多糖果的孩子)

如题这就很简单吧,找到最大值,然后判断每一位的加上额外是否大于等于最大值,就是注意一个等于就好public static List<Boolean> kidsWithCandies(int[] candies, int extraCandies) { int max =Integer.MIN_VALUE;//现有最多糖果数 for(int i: candies){//找到现有最多的数量 if(i>max){

2020-06-01 20:59:17 120

原创 LeetCode(14. 最长公共前缀)

如题最直观的做法,依次用strs[0]的每个字符去匹配所有其他字符串的相同位置public static String get(String[] strs) { if(strs.length==0){ return ""; } if(strs.length==1){ return strs[0]; } String str = strs[0];//最大前缀 for (int i = 0; i < str.length(); i++) { char ch

2020-05-29 18:54:06 92

原创 LeetCode(5. 最长回文子串)

如题起初想偷懒用dp,index为i处的最大回文串和包含i的最大回文串推导i+1的 //暂时无法实现 public static String longestPalindrome1(String s) { if (s.length() < 1) { return ""; } char[] cs = s.toCharArray(); List<int[][]> data = new ArrayList<>(); int[][] data1 = { {

2020-05-29 18:13:52 96

原创 LeetCode(16. 最接近的三数之和)

如题先直接暴力安排,三轮循环冲冲冲public static int threeSumClosest(int[] nums, int target) { int min=Integer.MAX_VALUE; int minsum=0; for(int i=0;i<nums.length-2;i++) { //第一重遍历 for(int x=i+1;x<nums.length-1;x++) { //第二次遍历 for(int y=x+1;y<nums.leng

2020-05-29 18:00:49 84

原创 LeetCode(198. 打家劫舍)

如题审题,偷了第i家以后是两种可能的做法,偷i+2家或者偷i+3家的,首先用回溯穷举试试public static void doalone(int idex,int[] nums,int sum,int[]re){ if(idex<nums.length){ sum+=nums[idex]; doalone(idex+2,nums,sum,re);//偷隔一位 doalone(idex+3,nums,sum,

2020-05-29 16:41:37 164

原创 LeetCode(13. 罗马数字转整数)

如题就是一个逐字符匹配了public static int romanToInt(String s) { int num = 0; int i=0; while(i<s.length()) { char ch = s.charAt(i); switch (ch) { case ('M'): num += 1000; break; case ('D'): num += 500; break; case ('C'): i

2020-05-28 18:51:38 77

原创 LeetCode(12. 整数转罗马数字)

如题首先想到的是通过进制位去匹配public static String change(int num) { StringBuilder sb = new StringBuilder(""); int a = num / 1000; int b = num % 1000; int c = num % 100; int d = num % 10; for (int i = 0; i < a; i++) {// 千位处理 sb.append("M"); } for

2020-05-28 18:30:19 73

原创 LeetCode(394 字符串解码)

如题有两种思路,一种是从外层向内层拼接public static String decodeString(String s) { if(s.length()==0) { return ""; } return write(new StringBuilder(""),s); } public static String write(StringBuilder sb,String s) { boolean flag =true;//包含标志 int bf = 0;//

2020-05-28 17:10:50 117

原创 LeetCode(11盛最多水的容器)

如题最直接的做法,直接从所有两两组合中找最大public static int maxArea(int[] height) { int max = 0; for (int i = 0; i < height.length - 1; i++) {// 左边界 for (int m = i + 1; m < height.length; m++) {// 右边界 if (Math.min(height[i], height[m]) * (m - i) > max)

2020-05-27 00:25:06 89

原创 LeetCode(9回文数)

如题基本思路就是倒过来比较是否相等public static boolean isPalindrome(int x) { if(x<0) { return false; } int res=0; int i=x; while(i!=0) { res=res*10+i%10; i/=10; } return res==x; }

2020-05-27 00:02:41 66

原创 LeetCode(8 字符串转整数)

如题感觉难点还是就一个越界判断public static int myAtoi(String str) { str = str.trim();//去除头部空格 int num=0; if(str.charAt(0)=='-') {//负号打头 for(int i=1;i<str.length();i++) { char ch = str.charAt(i); if(ch>='0'&&ch<='9') { if(num<I

2020-05-26 23:57:58 349

原创 LeetCode(7 整数反转)

如题这就不用分析了,直接依次取每位即可,难点就是个越界判断public static int reverse(int x) { int res=0; while(x!=0) { int i = x%10; x=x/10; if(res>Integer.MAX_VALUE/10||(res==Integer.MAX_VALUE/10&&i>7) ||res<Integer.MIN_VALUE/10||(res==Integer.MIN_

2020-05-26 00:05:54 57

原创 LeetCode(6 Z字形变换)

如题一眼看上去两种思路,一种是直接模拟,用二维数组实现。另一种就是直接找规律了先来简单的找规律public static String convert(String s, int numRows) { if(numRows==1) { return s; } char [] chs = new char[s.length()]; int index = 0;//chs的赋值位index int t = 2*numRows-2;//相邻完整列同一行的索引之差 int i1=

2020-05-26 00:00:25 74

原创 LeetCode(4 两个正向数组的中位数)

如题一眼看上去,还被唬住了,直接双指针plus安排 public static double findMedianSortedArrays(int[] nums1, int[] nums2) { if(nums1.length==0) { return nums2.length%2==0?((double)(nums2[nums2.length/2-1]+nums2[nums2.length/2]))/2:nums2[nums2.length/2]; } if(nums2.length

2020-05-20 23:45:16 152

原创 关于mybaties like与if标签进行string判断

使用oracle <if test='cloumn!="str"'> cloumn like ('%'||#{cloumn}||'%') </if>即可如果是mysql,sql换为 cloumn like concat('%',#{cloumn},'%')

2020-05-13 17:49:08 237

原创 有向图的寻径算法(bfs带路径记录)

既然都用到dfs了,那就再总结一下bfs。bfs只要就是一个记录遍历元素的问题,一般是使用队列还是dfs一样的,用领接表记录有向图 private static List<String> getlRoadByBFS(String start, String end, List<Line> datas) { Map<String, List<String>> ljb = new HashMap<String, List<String&gt

2020-05-12 11:06:22 698

原创 LeetCode(面试53I 在排序数组中查找数字)

如题就没必要分析了,最直观的就是遍历计数呗public static int search(int[] nums, int target) { int count=0; for(int num :nums) { if(num==target) { count++; } } return count; }但是很显然,不是最优结果,分析题意,是有序数组,那就有更优化的找对应值的方法了public static int search1(int[] n

2020-05-12 10:15:27 91

原创 LeetCode(面试28 对称的二叉树)

如题一眼看到题目,感觉可以镜像遍历,然后比较结果public boolean isSymmetric(TreeNode root) { if (root == null) { return true; } List<Integer> l1 = new ArrayList<Integer>(); List<Integer> l2 = ne...

2020-04-30 18:38:34 106

原创 有向图的寻径算法(dfs)

最近需要完成一个站点之间寻径的任务。基本可以抽象为有向图的寻径,于是复习一下。有向图的存储方法有两种,邻接表或者邻接矩阵,对于站点来说,总的站点数目较多且单个站点的相邻站点数目不会太多,所以选择用邻接表来实现。对于计算路径而非计算可达性,选用dfs方式public class Line { public String start; public String end; public...

2020-04-30 15:17:20 1237

原创 反射碰到的坑

简单的测试一下反射应用,结果出乎意料public static void main(String[] args) { Gjr1 gjr = new Gjr1(2); System.out.println(gjr.getClass().getCanonicalName()); try { Method mt = gjr.getClass().getMethod("sum", In...

2020-04-28 18:31:15 185

原创 LeetCode(20有效的括号)

如题很显然的运用抵消的思想来做public boolean isValid(String s) { char [] cs=new char[s.length()];//顺序缓存未匹配字符 int i=0;//可填入的index for(int m=0;m<s.length();m++) { if(s.charAt(m)=='('||s.charAt(m)=='{'||s...

2020-04-20 17:11:58 105

原创 LeetCode(941 有效的山脉数组)

如题很直观的题目,就是判断数组是否是先递增后递减,先通过直接遍历来进行判断public boolean validMountainArray(int[] A) { if(A==null||A.length<3) { return false; } int front=A[0]; int flag =-1;//前序增1 减0 for(int i=1;i<A....

2020-04-20 16:09:30 144

原创 LeetCode(999 车的可用捕获量)

如题很直观的思路,检索先找到R然后在它的4个方向上向外检索,先检索到B退出,直接检索到p这计数+1 public static int numRookCaptures(char[][] board) { int count =0; for(int i=0;i<8;i++) { for(int j=0;j<8;j++) { ...

2020-01-15 14:33:04 149

原创 LeetCode(455 分发饼干)

如题思路很清晰,每一块饼干匹配尽可能大的孩子即可public static int findContentChildren(int[] g, int[] s) { int count =0; Arrays.sort(g); Arrays.sort(s); int m = s.length-1;//倒序从大到小检索 int n = g.length-1; wh...

2020-01-15 11:38:27 71

原创 LeetCode(1232 缀点成线)

如题 真直观的比较斜率即可public boolean checkStraightLine(int[][] coordinates) { if(coordinates==null||coordinates.length<2) { return false; } double m = (double)(coordinates[1][1]...

2020-01-14 18:39:21 144

原创 LeetCode(1252 奇数值单元格的数目)

如题如果直接构造二维数组进行操作后检索,肯定是不够优雅的。可以类比为几何问题,两个长方形求差集,对应的某一行或列变换两次将会还原,也就是仅仅只用关注出现次数为奇数的对应行列即可public int oddCells(int n, int m, int[][] indices) { int x = 0;//出现次数为奇数次的行数的数量 int y = 0;//出现...

2020-01-14 18:25:48 162

空空如也

空空如也

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

TA关注的人

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