VMware coding Challenge:Date of Weekday

这道题再次证明了这种细节的题目,画个图容易搞清楚

 1 import java.util.Scanner;
 2
 3
 4 public class Solution2 {
 5     static int DateOfWeekday(int date, int weekday) {
 6         int cur = date%7;
 7         int res = 0;
 8         int dif = 0;
 9         if (weekday > 0) {
10             dif = 7*((weekday-1)/7) + (weekday%7-cur>0? weekday%7-cur : 7-(cur-weekday%7));
11             res = date + dif;
12         }
13         else if (weekday < 0){
14             weekday = Math.abs(weekday);
15             dif = 7*((weekday-1)/7) + (cur-weekday%7>0? cur-weekday%7 : 7-(weekday%7-cur));
16             res = date - dif;
17         }
18         else res = date;
19         return res;
20     }
21
22     public static void main(String[] args) {
23         Scanner in = new Scanner(System.in);
24         int res;
25         int _date;
26         _date = Integer.parseInt(in.nextLine());
27
28         int _weekday;
29         _weekday = Integer.parseInt(in.nextLine());
30
31         res = DateOfWeekday(_date, _weekday);
32         System.out.println(res);
33     }
34
35 }
 1     static int DateOfWeekday(int date, int weekday) {
 2         int cur = date % 7;
 3         int res;
 4         if (weekday == 0) return date;
 5         else if (weekday > 0) {
 6             if (weekday % 7 > cur) res = date + weekday % 7 - cur;
 7             else res = date + 7 - (cur - weekday % 7);
 8             res = res + 7*((weekday-1)/7);
 9         }
10         else {
11             if (Math.abs(weekday % 7)<cur) res= date - cur - weekday % 7;
12             else res = date - 7 - cur - weekday%7;
13             res = res - 7*((Math.abs(weekday)-1)/7);
14         }
15         return res;
16     }
时间: 2024-10-12 04:37:38

VMware coding Challenge:Date of Weekday的相关文章

VMware Coding Challenge: Possible Scores &amp;&amp; Summary: static

Combination Sum I 那道题的变体 1 /* 2 * Complete the function below. 3 */ 4 5 static int is_score_possible(int score, int[] increments) { 6 Arrays.sort(increments); 7 ArrayList<Integer> res = new ArrayList<Integer>(); 8 res.add(0); 9 helper(res, inc

VMware coding Challenge

思路:这道题要观察,举个例子,1 2 * * 3 * 4 * 5 * * 6 7 * 8 * *, 用Stack,先序遍历,遇到数字就入栈,如果遇到 * *,说明栈顶节点是叶子节点,一条根到叶子的路径这时候就存在于栈之中,只要计算栈的size(),就知道当前这条路径的深度,树的height就是这些深度的最大值. 空格的引入增添了不少判断上的麻烦, 比如: ab * *, 这棵树的height是1 而不是2. 在遍历节点的时候需要注意取空格之前的所有元素一起看

VMware coding Challenge: Coin Toss Betting

1 static int CoinTossEndAmount(int betAmount, String coinTossResults) { 2 if (betAmount <=0 || coinTossResults.length() == 0) return betAmount; 3 long Amount = betAmount; 4 long onebet = 1; 5 for (int i=0; i<coinTossResults.length(); i++) { 6 if (co

VMware Coding Challenge: Removing Duplicates Entries

1 static LinkedListNode removeDuplicates(LinkedListNode list) { 2 LinkedListNode cur = list; 3 HashSet<Integer> set = new HashSet<Integer>(); 4 set.add(list.val); 5 while (cur.next != null) { 6 if (!set.contains(cur.next.val)) { 7 set.add(cur.

VMware Coding Challenge: The Heist

类似BackpackII问题 1 static int maximize_loot(int[] gold, int[] silver) { 2 int[][] res = new int[gold.length+silver.length+1][10001]; 3 res[0][0] = 0; 4 for (int i=1; i<=gold.length; i++) { 5 for (int j=0; j<=10000; j++) { 6 res[i][j] = Math.max(res[i-

Linux命令学习总结:date命令【转】

本文转自:http://www.cnblogs.com/kerrycode/p/3427617.html 命令简介: date 根据给定格式显示日期或设置系统日期时间.print or set the system date and time 指令所在路径:/bin/date 命令语法: date [OPTION]... [+FORMAT] date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]] 命令参数: 参数 描述 -d 显示字符串描述的时间

shell 命令:date

一.date命令简介 作用:用来显示时间,这个命令在shell脚本中用得很多格式:date + 参数 + 格式参数:-d用来显示指定的时间 [[email protected] ~]# date //显示当前时间 2016年 04月 13日星期三 14:33:55 CST [[email protected] ~]# date -s "2016-10-12 07:09:35" //手动修改时间 2016年 10月 12日星期三 07:09:35 CST 自动校对时间: [[email 

linux命令(44):date命令

1.命令格式: date [参数]... [+格式] 2.命令功能: date 可以用来显示或设定系统的日期与时间. 3.命令参数: 必要参数: %H 小时(以00-23来表示). %I 小时(以01-12来表示). %K 小时(以0-23来表示). %l 小时(以0-12来表示). %M 分钟(以00-59来表示). %P AM或PM. %r 时间(含时分秒,小时以12小时AM/PM来表示). %s 总秒数.起算时间为1970-01-01 00:00:00 UTC. %S 秒(以本地的惯用法来

【转】每天一个linux命令(37):date命令

原文网址:http://www.cnblogs.com/peida/archive/2012/12/13/2815687.html 在linux环境中,不管是编程还是其他维护,时间是必不可少的,也经常会用到时间的运算,熟练运用date命令来表示自己想要表示的时间,肯定可以给自己的工作带来诸多方便. 1.命令格式: date [参数]... [+格式] 2.命令功能: date 可以用来显示或设定系统的日期与时间. 3.命令参数: 必要参数: %H 小时(以00-23来表示). %I 小时(以01