2019.9.10

771.宝石与石头
public int numJewelsInStones(String J, String S) {if (J == null || S == null) return 0;if (J.length() == 0 || S.length() == 0) return 0;Byte[] b = new Byte[58];int count = 0;for(char ch: J.toCharArray()){b[ch - 'A'] = 1;//'A'的ASCII码是65,'A'和'z'的ASCII码相差58}for(char ch: S.toCharArray()){if(b[ch - 'A'] != null && b[ch - 'A']== 1)count++;}return count;}

2019.9.17

1108.IP 地址无效化

和剑指offer的【字符串-替换空格】差不多的思路

public String defangIPaddr(String address) {int count = 0;//记录字符串中.的个数for(int i = 0; i < address.length(); i++){if(address.charAt(i) == '.')count++;}int oldLength = address.length();StringBuffer s = new StringBuffer(address);s.setLength(oldLength+count*2);for(int k = oldLength - 1; k > -1; k--){if(count > 0){if(s.charAt(k) != '.'){s.setCharAt(k+count*2,s.charAt(k));}else{s.replace(k+count*2-2,k+count*2+1,"[.]");count--;}}elsebreak;}return s.toString();}
237.删除链表中的节点

这题题意有点难理解,deleteNode传参是待删除的那个节点

/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode(int x) { val = x; }* }*/
class Solution {public void deleteNode(ListNode node) {node.val = node.next.val;node.next = node.next.next;node = null;//在链表上已删除节点后,清空它为null,方便GC标记回收}
}
182.查找重复的电子邮箱(原来力扣还有MySQL的题)

count 是聚合函数,使用 count(*) 要比count(字段) 要快,省略了判断字段是否为 null 的过程,mysql 对 count(*) 做了优化。

SELECT Email FROM Person GROUP BY Email HAVING COUNT(*) > 1;
# 或者
# select distinct a.Email from Person a, Person b where a.Email = b.Email and a.Id != b.Id
938.二叉搜索树的范围和(又是题目都看不懂的我,还有救吗)

参数给了二叉搜索树所属的两个节点,求二叉搜索树节点值按序排列时两节点值间(包括两节点)的所有节点值的和。可以遍历节点去判断节点值是否在这两个节点值间,在配合剪枝减少没必要的节点遍历

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode(int x) { val = x; }* }*/
import java.util.Stack;
class Solution {private int res = 0;//记录和public int rangeSumBST(TreeNode root, int L, int R) {if (root == null) return 0;else{dfs(root, L, R);}return res;            }//递归private void dfs(TreeNode root, int L, int R){if(root != null){if(root.val > L){dfs(root.left, L, R);}if(root.val < R){dfs(root.right, L, R);}if(root.val >= L && root.val <= R){res += root.val;}}}//迭代private void dfs1(TreeNode root, int L, int R){Stack<TreeNode> stack = new Stack<TreeNode>();stack.push(root);while(!stack.isEmpty()){TreeNode t = stack.pop();if(t != null){if(t.val > L){stack.push(t.left);}if(t.val < L){stack.push(t.right);}if(t.val >= L && t.val <= R){res += t.val;}}}}
}

2019.9.18

1021.删除最外层的括号
//用栈记录左右括号的匹配
public static String removeOuterParentheses(String S) {Stack<Character> stack = new Stack<>();StringBuffer sB = new StringBuffer();int start = 0;for(int i = 0; i < S.length(); i++){if(S.charAt(i) == '('){stack.push(S.charAt(i));}else {stack.pop();if(stack.empty()){sB.append(S.substring(start+1, i));start = i + 1;}}}return  sB.toString();
}//直接计数,效率更高。
//最外面的左括号跳过,L初始为1;当右括号数量等于左括号数量的位置就是最外面的右括号
public static String removeOuterParentheses1(String S) {StringBuffer sB = new StringBuffer();int L = 1, R = 0;for(int i = 1; i < S.length(); i++){if(S.charAt(i) == '('){sB.append(S.charAt(i));L++;}else {R++;if(L == R){i++;L = 1;R = 0;}else {sB.append(S.charAt(i));}}}return sB.toString();
}
595.大的国家(拯救信心系列)
SELECT name, population, area FROM WORLD WHERE area > 3000000 OR population > 25000000
709.转换成小写字母(拯救信心系列)
 public String toLowerCase(String str) {StringBuffer sB = new StringBuffer(str);for(int i = 0; i < str.length(); i++){int a = str.charAt(i) - 'A';if(a >= 0 && a <= 25){sB.setCharAt(i, (char)('a'+a));}}return sB.toString();}//效率更高。ASCII码 'A'=65 'a'=97public String toLowerCase1(String str) {StringBuffer sB = new StringBuffer(str);for(int i = 0; i < str.length(); i++){if(str.charAt(i) >= 65 && str.charAt(i) <= 90){sB.setCharAt(i, (char)(str.charAt(i)+32));}}return sB.toString();}
617.合并二叉树(明明想法一样,我就递归不出来,哭。。。)
public class TreeNode {int val;TreeNode left;TreeNode right;TreeNode(int x) {val = x;}}public TreeNode mergeTrees(TreeNode t1, TreeNode t2) {if(t1 == null) return t2;if(t2 == null) return t1;t1.val = t1.val + t2.val;t1.left = mergeTrees(t1.left, t2.left);t1.right = mergeTrees(t1.right, t2.right);return t1;}
804.唯一摩尔斯密码词(拯救信心系列)

改进:String+HashMap ——> StringBuffer+HashSet

 public int uniqueMorseRepresentations(String[] words) {String[] array = {".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."};//HashMap<String, Byte> map = new HashMap<>();HashSet<String> set = new HashSet<>();//考虑用for(String s: words){//要操作字符串的话,StringBuffer比String高效一点StringBuffer tmp = new StringBuffer();for(int i = 0; i < s.length(); i++){tmp.append(array[s.charAt(i)-'a']);}//不用判断map是否包含key,因为如果key已存在,put会把value直接覆盖//map.put(tmp.toString(),(byte)0);set.add(tmp.toString());}//return map.size();return set.size();}
832.翻转图像(拯救信心系列)
public static int[][] flipAndInvertImage(int[][] A) {int col = A[0].length;for(int i = 0; i < A.length; i++){for(int k = 0; k < (col+1)/2; k++){if(A[i][k] == A[i][col-1-k]){if(k != col-1-k){A[i][col-1-k]= (A[i][k]==1?0:1);}A[i][k] = (A[i][k]==1?0:1);}}}return A;
}
620.有趣的电影(。。第一次竟然没敲出来)

MySQL用mod(row_name, number)函数来取模;用id&1来判断奇数更快;根据最左前缀和and的短路,让where先判断id再去判断description,更快;ANSI标准中是用<>表示不等于,虽然也可以用!=

SELECT * FROM cinema WHERE id&1 AND description <> 'boring'  ORDER BY rating DESC
461.汉明距离

先异或,然后用剑指offer里的【二进制数中1的个数】

public int hammingDistance(int x, int y) {int xor = x ^ y;int count = 0;while(xor != 0){count += xor&1;xor>>=1;}return count;}
226.翻转二叉树(剑指offer【二叉树的镜像】)
private TreeNode tmp = null;
public TreeNode invertTree(TreeNode root) {if(root == null) return null;tmp = root.left;root.left = root.right;root.right = tmp;invertTree(root.left);invertTree(root.right);return root;
}
657.机器人能否返回原点
public boolean judgeCircle(String moves) {int x = 0, y = 0;for(int i = 0; i < moves.length(); i++){switch (moves.charAt(i)){case 'L' : x++; break;case 'R' : x--; break;case 'U' : y++; break;case 'D' : y--; break; }}return x == 0 && y == 0;}
1051.高度检查器
public static int heightChecker(int[] heights) {int[] res = new int[100];//用于计数排序int count = 0;for(int i = 0; i < heights.length; i++){res[heights[i]-1]++;}int k = 0;for(int i = 0; i < heights.length; i++){while (res[k] == 0){k++;}if(k!=heights[i]-1) count++;res[k]--;}return count;
}
627.交换工资

抄的。SQL有char(int)、ascii(char)函数?牛逼!!

update salary set sex = char(ASCII(sex) ^ ASCII('m') ^ ASCII('f')); #暂时这个最棒
#UPDATE salary SET sex = char(ascii('m') + ascii('f') - ascii(sex));

官方的case…when…也可以学学

UPDATE salary
SET sex = CASE sexWHEN 'm' THEN 'f'ELSE 'm'END;

咱变着花样来,还有if

update salary set sex=if(sex = 'f', 'm','f');

力扣题【简单级别】1相关推荐

  1. 力扣题458:可怜的小猪

    力扣题458:可怜的小猪 有 buckets 桶液体,其中 正好 有一桶含有毒药,其余装的都是水.它们从外观看起来都一样.为了弄清楚哪只水桶含有毒药,你可以喂一些猪喝,通过观察猪是否会死进行判断.不幸 ...

  2. 滑动窗口算法框架(Java版)秒杀力扣题(76、567、438、3、485)

    一.声明 1.非常感谢东哥(labuladong)分享了**滑动窗口算法框架**: 2.我在理解了东哥的思想后,用Java实现了滑动窗口算法框架,一来方便自己学习,二来方便一些Java小伙伴: 3.再 ...

  3. 力扣(简单+中等)50题整理总结

    文章目录 前言 一.简单题 1. 两数之和 7. 整数反转 9. 回文数 13. 罗马数字转整数 14. 最长公共前缀 20. 有效的括号 21. 合并两个有序链表 26. 删除有序数组中的重复项 2 ...

  4. 力扣题——2.除数与被除数

    下面,我们来看一道力扣题 题目如下: 需求:给定两个整数,被除数和除数(都是正数,且不超过int范围)将两数相除 要求:不使用乘法.除法和%运算符得到商和余数 分析: 在分析这道题之前,我们先来将一个 ...

  5. 力扣题 <爬楼梯> 递归结合表

    题目描述: 假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 示例 1: 输入:n = 2 输出:2 解释:有两种方法可以爬到楼顶 ...

  6. 力扣题库设计循环队列

    题目要求: 设计你的循环队列实现. 循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环.它也被称为"环形缓冲器". 循环队列 ...

  7. leetcode344. 反转字符串 史上最简单力扣题

    编写一个函数,其作用是将输入的字符串反转过来.输入字符串以字符数组 char[] 的形式给出. 不要给另外的数组分配额外的空间,你必须原地修改输入数组.使用 O(1) 的额外空间解决这一问题. 你可以 ...

  8. 【力扣算法简单五十题】35.反转链表

    给你单链表的头节点 head ,请你反转链表,并返回反转后的链表. 示例 1: 输入:head = [1,2,3,4,5] 输出:[5,4,3,2,1] 示例 2: 输入:head = [1,2] 输 ...

  9. 一道『easy』等级的力扣题,我写了两个小时的笔记...

    做第13题:13. 罗马数字转整数,本身的逻辑很简单,但是我写了两个小时的笔记. 原因是我对 C++ 11 及以上一直不熟(以前一直在用 python 干活儿),因此,决定,一边做题,一边总结知识点. ...

最新文章

  1. xx学OD -- 消息断点 RUN跟踪(下)
  2. 系统性能检测工具之lsof
  3. FishEye for Silverlight
  4. C#中lock死锁实例教程
  5. Android源码解析--AlertDialog及AlertDialog.Builder
  6. 【性能优化】 之 几种常见的等待事件的演示示例
  7. Spring之HelloWorld
  8. 最全面试考点与面试技巧,大厂面经合集
  9. linux设置自启动方式
  10. Flutter之Binding简单梳理
  11. jqgrid本地数据例子_FMS财务系统:日常数据核对与处理
  12. PHP之Trait详解
  13. 利用openmp实现矩阵相乘_矩阵快速幂
  14. dell 如何给raid分区_Dell服务器如何进行RAID级别在线转换及RAID扩容
  15. 《Linux管理与应用》课程考核方案
  16. 家长会计算机教师致辞,家长会教师致辞最新
  17. html5手机页面 点击事件
  18. 同洲电子转型之殇:新瓶装老酒的定位迷航
  19. 联想G40-30进win10PE触摸板、键盘无反应
  20. 洛谷P4568 [JLOI2011] 飞行路线 题解

热门文章

  1. 2018-5-19看易中天视频学习政治经济
  2. 【杰理AC696X】PWM推RGB灯实例
  3. 昨夜MSN上偶遇伊人
  4. pycharm无限延长试用时间
  5. word显示和隐藏段落标记
  6. Linux 升级Openssh8.0p1 和 Openssl1.0.2r的小插曲
  7. Erlang和Web
  8. 深度学习工具(Netscope)
  9. PDF转图片怎么转换?分享两个好用的转换小技巧
  10. 关于Winscp 密码获取解密