LeetCode刷刷记录
一遍考研,一遍还是要刷刷题。感觉自己的时间安排的不是很好,还是要抓紧自己的日常时间,当然,也要练练刷题的手感。
1.第一题就两重循环找到索引就OK,因为是无序的,所以就不能用二分来查找,题目中每个数的下标是定死的,所以不能排序后再二分。真是太年轻,什么都想试试(4.5)
1 public class Solution { 2 public int[] twoSum(int[] nums, int target) { 3 int[] arr = new int[2]; 4 int cnt = 0; 5 for(int i = 0; i < nums.length; ++i){ 6 for(int j = i+1; j < nums.length; ++j) { 7 if(nums[i] + nums[j] == target){ 8 arr[cnt] = i; 9 cnt++; 10 arr[cnt] = j; 11 cnt++; 12 } 13 } 14 } 15 return arr; 16 } 17 }
View Code
2.第二题就是个简单的java单链表,将两个链表合成一个链表。需要简单考虑一下进位问题,调试还是调试了一会儿,链表又有段时间没用过了,想了半天。
1 /** 2 * Definition for singly-linked list. 3 * public class ListNode { 4 * int val; 5 * ListNode next; 6 * ListNode(int x) { val = x; } 7 * } 8 */ 9 public class Solution { 10 public ListNode addTwoNumbers(ListNode l1, ListNode l2) { 11 int t1, t2; 12 ListNode head; 13 t1 = (l1.val + l2.val) % 10; 14 ListNode l = new ListNode(t1); 15 head = l; 16 t2 = (l1.val + l2.val) / 10; 17 while(l1.next != null && l2.next != null){ 18 l1 = l1.next; 19 l2 = l2.next; 20 t1 = (l1.val + l2.val + t2) % 10; 21 t2 = (l1.val + l2.val + t2) / 10; 22 ListNode ltmp = new ListNode(t1); 23 l.next = ltmp; 24 l = l.next; 25 } 26 while(l1.next!=null){ 27 l1 = l1.next; 28 t1 = (l1.val + t2) % 10; 29 t2 = (l1.val + t2) / 10; 30 ListNode ltmp = new ListNode(t1); 31 l.next = ltmp; 32 l = l.next; 33 } 34 while(l2.next != null) { 35 l2 = l2.next; 36 t1 = (l2.val + t2) % 10; 37 t2 = (l2.val + t2) / 10; 38 ListNode ltmp = new ListNode(t1); 39 l.next = ltmp; 40 l = l.next; 41 } 42 if(t2 != 0){ 43 ListNode ltmp = new ListNode(t2); 44 l.next = ltmp; 45 l = l.next; 46 } 47 return head; 48 } 49 }
View Code
我去,返回头看自己以前的代码,感觉昨天写的好搓啊
1 public class Solution { 2 public ListNode addTwoNumbers(ListNode l1, ListNode l2) { 3 ListNode ret = new ListNode(0); 4 ListNode cur = ret; 5 6 int sum = 0; 7 while(true) { 8 if(l1 != null) { 9 sum += l1.val; 10 l1 = l1.next; 11 } 12 if(l2 != null) { 13 sum += l2.val; 14 l2 = l2.next; 15 } 16 cur.val = sum % 10; 17 sum /= 10; 18 19 if(l1 != null || l2 != null || sum != 0) { 20 //cur = (cur.next = new ListNode(0)); 21 cur.next = new ListNode(0); 22 cur = cur.next; 23 } else { 24 break; 25 } 26 } 27 return ret; 28 } 29 }
View Code
3.第37题sudu,这个题目好吧,我猥琐的用了之前的代码,就dfs就可以
1 package LeetCode; 2 3 /** 4 * Created by lenovo on 2016-04-07. 5 */ 6 7 public class Solution { 8 static int[][] row = new int[9][9]; 9 static int[][] col = new int[9][9]; 10 static int[][] per = new int[9][9]; 11 static int[][] map = new int[9][9]; 12 static boolean isFind = false; 13 14 public void solveSudoku(char[][] board) { 15 fill(row); 16 fill(col); 17 fill(per); 18 isFind = false; 19 int k; 20 for(int i = 0; i < 9; ++i) 21 for(int j = 0; j < 9; ++j){ 22 if(board[i][j] != '.'){ 23 k = board[i][j] - '0'; 24 map[i][j] = k - 1; 25 if(k != 0){ 26 row[i][k-1] = col[j][k-1] = 27 per[(i/3)*3+(j/3)][k-1] = 1; 28 } 29 }else{ 30 map[i][j] = -1; 31 } 32 } 33 34 dfs(0, 0, board); 35 } 36 static void fill(int[][] a){ 37 for(int i = 0; i < 9; ++i){ 38 for(int j = 0; j < 9; ++j){ 39 a[i][j] = 0; 40 } 41 } 42 } 43 public static void dfs(int x, int y, char[][] board){ 44 int u = x * 9 + y + 1; 45 if(x == 9){ 46 isFind = true; 47 for(int i = 0; i < 9; ++i) 48 for(int j = 0; j < 9; ++j) 49 board[i][j] = (char)(map[i][j] + '0' + 1); 50 } 51 if(isFind) return; 52 if(map[x][y] != -1){ 53 dfs(u/9, u%9, board); 54 return; 55 } 56 57 for(int i = 0; i < 9 && !isFind; ++i){ 58 int k = (x/3)*3 + y/3; 59 if(row[x][i] == 0 && col[y][i] == 0 && per[k][i] == 0){ 60 row[x][i] = col[y][i] = per[k][i] = 1; 61 map[x][y] = i; 62 63 dfs(u/9, u%9, board); 64 65 row[x][i] = col[y][i] = per[k][i] = 0; 66 map[x][y] = -1; 67 } 68 } 69 } 70 71 public static void main(String[] args){ 72 char[][] board = { {'.','.','9','7','4','8','.','.','.'}, 73 {'7','.','.','.','.','.','.','.','.'}, 74 {'.','2','.','1','.','9','.','.','.'}, 75 {'.','.','7','.','.','.','2','4','.'}, 76 {'.','6','4','.','1','.','5','9','.'}, 77 {'.','9','8','.','.','.','3','.','.'}, 78 {'.','.','.','8','.','3','.','2','.'}, 79 {'.','.','.','.','.','.','.','.','6'}, 80 {'.','.','.','2','7','5','9','.','.'}}; 81 82 Solution s = new Solution(); 83 s.solveSudoku(board); 84 } 85 }
View Code
但是,这个题目我有疑惑,并不是算法的疑惑,而是java中static变量的疑惑。因为有过用java写面向过程的代码(好吧,是java的语法问题,关于static的,以前用一直都没有问题,然后今天就有问题了)然后好好找下,看看(4.7)
转载于:https://www.cnblogs.com/ya-cpp/p/5357487.html
LeetCode刷刷记录相关推荐
- LeetCode解题记录(409)——最长回文串
LeetCode解题记录--最长回文串 题目描述 示例 题目理解 解题思路 题目描述 给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串. 在构造过程中,请注意区分大小写.比 ...
- LeetCode基本记录【2】// BASIC NOTES AND CODES OF LEETCODE [ 2 ]
LeetCode基本记录[2] 19. Remove Nth Node From End of List Given a linked list, remove the nth node from t ...
- LeetCode基本记录【5】// BASIC NOTES AND CODES OF LEETCODE [ 5 ]
LeetCode基本记录[5] 78. Subsets Given a set of distinct integers, nums, return all possible subsets (the ...
- leetcode学习记录5——53.最大子序和
leetcode学习记录 leetcode学习记录五 最大子序和 解题思路 代码 leetcode学习记录五 最大子序和 难度:简单 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数 ...
- leetcode学习记录_贪心
贪心的特点就是不断求得局部最优解 然后用局部最优解求得全局最优解 55. 跳跃游戏 给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 . 数组中的每个元素代表你在该位置可以跳跃的最大长度 ...
- leetcode 解题记录
一.数组 1.26.从排序数组中删除重复项 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 ...
- leetcode竞赛记录-第266场周赛
第266场周赛记录 得分排名情况 赛题分析 题一:统计字符串中的元音字符串(easy完成) 题二:所有字符串中的元音(medium未完成) 题三:分配给商店的最多商品的最小值(medium未完成) 题 ...
- leetcode解题记录(一)
仅为自己的学习做记录 1.leetcode1:两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入 ...
- mysql——leetcode问题记录
问题: 表1: Person +-------------+---------+ | 列名 | 类型 | +-------------+---------+ | PersonId | int | | ...
- leetcode学习记录_二叉树_树
二叉搜索树(二叉排序树.二叉查找树) 二叉树值一种特殊的二叉树,它要么是空树,要么满足以下条件: 若左子树存在,则左子树上的所有结点都一定小于根结点,反之,右子树的所有结点都一定大于根节点,并且除了根 ...
最新文章
- 【转载】有软件开发,就要有软件测试!
- Google AMP WebPackage 在 Webnovel 的应用
- 蓝桥杯练习系统习题解答-入门训练
- Python双版本下创建一个Scrapy(西瓜皮)项目
- html5语法参考图片,仿AS语法来写HTML5—第1章,显示一张图片
- 计算机专业词典_好书优选:实用英汉汉英计算机词典
- boost::ratio_multiply相关的测试程序
- NetCat Tutorials
- 开源视觉salm算法介绍
- P4248-[AHOI2013]差异【SAM or SA】
- java多线程笔记补充之	线程控制操作
- postgresql获取表最后更新时间(通过触发器将时间写入另外一张表)
- 菜刀php教程,Weevely(php菜刀)工具使用详解
- 1053: [HAOI2007]反素数ant
- 【优化算法】混合增强灰狼优化布谷鸟搜索算法(AGWOCS)【含Matlab源码 1331期】
- Make the Team(匈牙利算法)
- 07、Flutter FFI 数组
- 一个小型VC项目的开发
- WSO2一般使用教程
- 植物大战僵尸海盗22困难通关